[2026-07-15 11:28:48.865] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 31m, MIS in 19h 31m [2026-07-15 11:28:48.907] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-07-15 11:28:48.918] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/var/lib/docker/overlay2/5ac02f430354be658e0135c16f9c5c73036e99cd70c78352a2f72d6bf47bb2af/merged"}, []}} [2026-07-15 11:28:48.920] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/var/lib/docker/overlay2/5f3fdd9b13261e59b7562aca9831101518237abaa6eb67abe9e41e0b402f7004/merged"}, []}} [2026-07-15 11:28:48.920] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-07-15 11:28:50.482] [INFO ] Terminal Event Listener started and listening to events [2026-07-15 11:28:50.483] [INFO ] Rule Validation Worker started - will run every hour [2026-07-15 11:28:50.483] [INFO ] Building initial filter cache... [2026-07-15 11:28:50.514] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.3ms idle=200.1ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 11:28:50.546] [DEBUG] QUERY OK source="filter_usage" db=1.0ms queue=1.4ms idle=44.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-15 11:28:50.546] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 11:28:50.640] [INFO ] Device phoenix_client_piyush connected [2026-07-15 11:28:50.681] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4059 (http) [2026-07-15 11:28:50.700] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4059 [2026-07-15 11:28:51.727] [DEBUG] Tzdata polling for update. [2026-07-15 11:28:52.420] [DEBUG] Tzdata polling shows the loaded tz database is up to date. [2026-07-15 11:28:54.485] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1135.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-07-15 11:28:55.827] [INFO ] GET / [2026-07-15 11:28:55.891] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-15 11:28:56.031] [INFO ] Sent 200 in 203ms [2026-07-15 11:28:58.230] [INFO ] GET /images/favicon.png [2026-07-15 11:28:58.277] [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-15 11:28:59.486] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1135.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-07-15 11:29:03.493] [ERROR] MyXQL.Connection (#PID<0.1060.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1135.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1135.0> (:proc_lib) was at location: :prim_inet.recv0/3 (myxql 0.8.0) lib/myxql/client.ex:209: MyXQL.Client.recv_packets/5 (myxql 0.8.0) lib/myxql/connection.ex:104: MyXQL.Connection.handle_execute/4 (db_connection 2.9.0) lib/db_connection/holder.ex:356: DBConnection.Holder.holder_apply/4 (db_connection 2.9.0) lib/db_connection.ex:1539: DBConnection.run_execute/5 (db_connection 2.9.0) lib/db_connection.ex:1573: DBConnection.run/4 (db_connection 2.9.0) lib/db_connection.ex:791: DBConnection.parsed_prepare_execute/5 (db_connection 2.9.0) lib/db_connection.ex:783: DBConnection.prepare_execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1019: Ecto.Adapters.SQL.execute!/5 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1011: Ecto.Adapters.SQL.execute/6 (oban 2.20.3) lib/oban/peers/database.ex:181: Oban.Peers.Database.delete_expired_peers/1 (oban 2.20.3) lib/oban/peers/database.ex:104: anonymous fn/1 in Oban.Peers.Database.handle_info/2 (platform_core 0.1.0) lib/platform_core/repo.ex:2: anonymous fn/1 in PlatformCore.Repo.transaction/2 (ecto 3.13.5) lib/ecto/repo/transaction.ex:11: anonymous fn/3 in Ecto.Repo.Transaction.transact/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1473: anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4 (db_connection 2.9.0) lib/db_connection.ex:1747: DBConnection.run_transaction/4 (oban 2.20.3) lib/oban/repo.ex:156: Oban.Repo.transaction/4 (oban 2.20.3) lib/oban/peers/database.ex:108: anonymous fn/2 in Oban.Peers.Database.handle_info/2 (telemetry 1.3.0) /var/www/internaltesting/Piyush/prverification/TMS_UAT/deps/telemetry/src/telemetry.erl:324: :telemetry.span/3 (oban 2.20.3) lib/oban/peers/database.ex:101: Oban.Peers.Database.handle_info/2 [2026-07-15 11:29:10.466] [INFO ] Received status update for terminal UNKNOWN_SN [2026-07-15 11:29:10.466] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T11:29:08Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T11:29:08Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T11:29:08Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T11:29:08Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T11:29:08Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T11:29:08Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T11:29:08Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T11:29:08Z","value":""}],"oid":"organization_id","sn":"UNKNOWN_SN","uploadTime":"2026-07-15T11:29:08Z","vendor":"MoreFun"} [2026-07-15 11:29:10.467] [INFO ] Decoded JSON: %{"oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T11:29:08Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T11:29:08Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T11:29:08Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T11:29:08Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""}], "sn" => "UNKNOWN_SN", "uploadTime" => "2026-07-15T11:29:08Z", "vendor" => "MoreFun"} [2026-07-15 11:29:10.467] [INFO ] Extracted versions for UNKNOWN_SN: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-07-15 11:29:10.495] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.9ms idle=767.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` = ?) ["UNKNOWN_SN"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:29:10.529] [INFO ] Terminal updated: UNKNOWN_SN [2026-07-15 11:29:10.759] [DEBUG] QUERY OK source="tms_terminals" db=29.8ms queue=196.7ms idle=0.0ms UPDATE `tms_terminals` SET `status` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", nil, nil, nil, ~N[2026-07-15 11:29:10], 15] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:29:10.760] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["UNKNOWN_SN"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:29:10.827] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms queue=41.5ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:29:10], 15] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:29:10.857] [DEBUG] QUERY OK db=18.2ms queue=1.4ms idle=67.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [15, "organization_id", "2026-07-15T11:29:08Z", ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:29:10.867] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47134, oid: "organization_id", upload_time: "2026-07-15T11:29:08Z", terminal_id: 15, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]} [2026-07-15 11:29:10.867] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T11:29:08Z", "value" => "online"} [2026-07-15 11:29:10.883] [DEBUG] QUERY OK db=13.8ms queue=1.6ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T11:29:08Z", "online", "status", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:10.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405589, itemkey: "status", value: "online", timestamp: "2026-07-15T11:29:08Z", message: "Terminal status update", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:10.883] [INFO ] Setting terminal UNKNOWN_SN status to 'online' from status itemkey [2026-07-15 11:29:10.885] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.6ms idle=26.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:29:10], 15] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 11:29:10.885] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T11:29:08Z", "value" => "42"} [2026-07-15 11:29:10.923] [DEBUG] QUERY OK db=37.0ms idle=2.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T11:29:08Z", "42", "battery", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:10.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405590, itemkey: "battery", value: "42", timestamp: "2026-07-15T11:29:08Z", message: "Battery level", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:10.923] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T11:29:08Z", "value" => "online"} [2026-07-15 11:29:10.947] [DEBUG] QUERY OK db=22.7ms queue=0.7ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T11:29:08Z", "online", "network", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:10.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405591, itemkey: "network", value: "online", timestamp: "2026-07-15T11:29:08Z", message: "Network connectivity", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:10.947] [INFO ] Setting terminal UNKNOWN_SN status to 'online' from network itemkey [2026-07-15 11:29:10.948] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=25.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:29:10], 15] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 11:29:10.948] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T11:29:08Z", "value" => "0"} [2026-07-15 11:29:10.972] [DEBUG] QUERY OK db=23.0ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T11:29:08Z", "0", "cpu", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:10.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405592, itemkey: "cpu", value: "0", timestamp: "2026-07-15T11:29:08Z", message: "CPU usage percentage", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:10.972] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""} [2026-07-15 11:29:10.997] [DEBUG] QUERY OK db=23.0ms queue=0.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-07-15T11:29:08Z", "parameter_config", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:10.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405593, itemkey: "parameter_config", value: nil, timestamp: "2026-07-15T11:29:08Z", message: "Current parameters version", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:10.997] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""} [2026-07-15 11:29:11.030] [DEBUG] QUERY OK db=31.7ms queue=0.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T11:29:08Z", "emv_config", 47134, ~N[2026-07-15 11:29:10], ~N[2026-07-15 11:29:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:11.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405594, itemkey: "emv_config", value: nil, timestamp: "2026-07-15T11:29:08Z", message: "Current EMV config version", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:10], updated_at: ~N[2026-07-15 11:29:10]}} [2026-07-15 11:29:11.030] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""} [2026-07-15 11:29:11.056] [DEBUG] QUERY OK db=25.6ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T11:29:08Z", "keys_config", 47134, ~N[2026-07-15 11:29:11], ~N[2026-07-15 11:29:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:11.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405595, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T11:29:08Z", message: "Current keys config version", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:11], updated_at: ~N[2026-07-15 11:29:11]}} [2026-07-15 11:29:11.056] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T11:29:08Z", "value" => ""} [2026-07-15 11:29:11.075] [DEBUG] QUERY OK db=17.8ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-07-15T11:29:08Z", "application", 47134, ~N[2026-07-15 11:29:11], ~N[2026-07-15 11:29:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:29:11.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405596, itemkey: "application", value: nil, timestamp: "2026-07-15T11:29:08Z", message: "Current application version", status_log_id: 47134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:29:11], updated_at: ~N[2026-07-15 11:29:11]}} [2026-07-15 11:29:11.103] [DEBUG] QUERY OK source="tms_terminals" db=26.3ms idle=21.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:29:11], 15] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-15 11:30:23.793] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:30:23.793] [INFO ] Incoming JSON payload: {"oid":"e93dc441-e9af-482e-9387-be81f7712e40","sn":"98250623730001","uploadTime":"2026-07-15T02:40:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:40:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:30:23.795] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e93dc441-e9af-482e-9387-be81f7712e40", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:40:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:40:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:40:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:40:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:40:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:40:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:40:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:40:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:40:13Z", "vendor" => "morefun"} [2026-07-15 11:30:23.795] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:30:23.805] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:30:23.805] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:30:23.813] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.6ms idle=1144.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-15 11:30:23.815] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=145.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-15 11:30:23.815] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:30:23.818] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.3ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:30:23.951] [DEBUG] QUERY OK source="tms_terminals" db=91.4ms queue=41.3ms idle=3.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-07-15 11:30:23], 19] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-07-15 11:30:23.951] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:30:23.951] [INFO ] Event published: terminal_updated [2026-07-15 11:30:23.952] [DEBUG] Processing terminal event: terminal_updated [2026-07-15 11:30:23.952] [INFO ] Processing terminal_updated event for terminal 19 [2026-07-15 11:30:23.952] [INFO ] Changed fields: [:vendor, :model] [2026-07-15 11:30:23.962] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.5ms queue=2.1ms idle=141.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-15 11:30:23], 19] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-07-15 11:30:23.964] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.6ms idle=11.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [19] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-07-15 11:30:23.973] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=1.6ms idle=6.9ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-07-15 11:30:23.974] [INFO ] Applied 0 rules to terminal 98250623730001 [2026-07-15 11:30:24.021] [DEBUG] QUERY OK source="tms_terminals" db=15.9ms queue=41.9ms idle=0.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-07-15 11:30:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:30:24.025] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:30:24.026] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=51.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:30:24.102] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms queue=41.3ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:30:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:30:24.126] [DEBUG] QUERY OK db=22.4ms queue=0.8ms idle=76.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e93dc441-e9af-482e-9387-be81f7712e40", "2026-07-15T02:40:13Z", ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:30:24.126] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47135, oid: "e93dc441-e9af-482e-9387-be81f7712e40", upload_time: "2026-07-15T02:40:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]} [2026-07-15 11:30:24.126] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:40:13Z", "value" => "morefun"} [2026-07-15 11:30:24.206] [DEBUG] QUERY OK db=37.3ms queue=41.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "morefun", "vendor", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405597, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.206] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:40:13Z", "value" => "kiosk_launcher"} [2026-07-15 11:30:24.271] [DEBUG] QUERY OK db=22.7ms queue=41.9ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "kiosk_launcher", "model", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405598, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.272] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:40:13Z", "value" => "1.0"} [2026-07-15 11:30:24.306] [DEBUG] QUERY OK db=34.5ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "1.0", "app_version", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405599, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.307] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:40:13Z", "value" => "13"} [2026-07-15 11:30:24.343] [DEBUG] QUERY OK db=34.3ms queue=0.3ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "13", "android_version", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405600, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.344] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "933"} [2026-07-15 11:30:24.360] [DEBUG] QUERY OK db=15.6ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "933", "ram_free_mb", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405601, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.360] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:40:13Z", "value" => "WIFI"} [2026-07-15 11:30:24.395] [DEBUG] QUERY OK db=34.6ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "WIFI", "network_type", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405602, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.396] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:40:13Z", "value" => "true"} [2026-07-15 11:30:24.437] [DEBUG] QUERY OK db=40.3ms queue=0.5ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "true", "kiosk_active", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405603, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.437] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:40:13Z", "value" => ""} [2026-07-15 11:30:24.462] [DEBUG] QUERY OK db=23.1ms queue=0.8ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:40:13Z", "sim_operator", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405604, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.462] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"} [2026-07-15 11:30:24.480] [DEBUG] QUERY OK db=17.8ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "UNKNOWN", "sim_number", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405605, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.481] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"} [2026-07-15 11:30:24.526] [DEBUG] QUERY OK db=45.0ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "UNKNOWN", "sim_iccid", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405606, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.527] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"} [2026-07-15 11:30:24.552] [DEBUG] QUERY OK db=24.9ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "UNKNOWN", "sim_imsi", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405607, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.553] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"} [2026-07-15 11:30:24.594] [DEBUG] QUERY OK db=38.8ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "UNKNOWN", "sim_iccid2", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405608, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.595] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:40:13Z", "value" => "UNKNOWN"} [2026-07-15 11:30:24.628] [DEBUG] QUERY OK db=32.9ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "UNKNOWN", "sim_imsi2", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405609, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.629] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "13"} [2026-07-15 11:30:24.656] [DEBUG] QUERY OK db=27.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "13", "data_usage_mb", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405610, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.657] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:40:13Z", "value" => "0"} [2026-07-15 11:30:24.706] [DEBUG] QUERY OK db=47.8ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "0", "mobile_data_mb", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405611, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:24.709] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:40:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:30:24.742] [DEBUG] QUERY OK db=28.2ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47135, ~N[2026-07-15 11:30:24], ~N[2026-07-15 11:30:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:24.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405612, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:40:13Z", message: nil, status_log_id: 47135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:24], updated_at: ~N[2026-07-15 11:30:24]}} [2026-07-15 11:30:59.810] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:30:59.811] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:30:58Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:30:58Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:30:58Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:30:58Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:30:58Z","message":""}]} [2026-07-15 11:30:59.811] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:30:58Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:30:58Z"} [2026-07-15 11:30:59.812] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:30:59.813] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=983.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-15 11:30:59.813] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:30:59.889] [DEBUG] QUERY OK source="tms_terminals" db=34.3ms queue=41.0ms idle=56.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:30:59], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:30:59.890] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=76.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-15 11:30:59.901] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:30:59], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:30:59.943] [DEBUG] QUERY OK db=40.1ms queue=0.3ms idle=11.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:30:58Z", ~N[2026-07-15 11:30:59], ~N[2026-07-15 11:30:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:30:59.943] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47136, oid: "org-id-placeholder", upload_time: "2026-07-15T11:30:58Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:59], updated_at: ~N[2026-07-15 11:30:59]} [2026-07-15 11:30:59.943] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => 28} [2026-07-15 11:30:59.967] [DEBUG] QUERY OK db=22.7ms queue=0.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:30:58Z", "28", "battery", 47136, ~N[2026-07-15 11:30:59], ~N[2026-07-15 11:30:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:59.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405613, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:30:58Z", message: nil, status_log_id: 47136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:59], updated_at: ~N[2026-07-15 11:30:59]}} [2026-07-15 11:30:59.967] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:30:58Z", "value" => 50} [2026-07-15 11:30:59.992] [DEBUG] QUERY OK db=23.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:30:58Z", "50", "memory", 47136, ~N[2026-07-15 11:30:59], ~N[2026-07-15 11:30:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:30:59.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405614, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:30:58Z", message: "Normal", status_log_id: 47136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:59], updated_at: ~N[2026-07-15 11:30:59]}} [2026-07-15 11:30:59.992] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => 50} [2026-07-15 11:31:00.041] [DEBUG] QUERY OK db=48.2ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:30:58Z", "50", "cpu", 47136, ~N[2026-07-15 11:30:59], ~N[2026-07-15 11:30:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:00.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405615, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:30:58Z", message: nil, status_log_id: 47136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:30:59], updated_at: ~N[2026-07-15 11:30:59]}} [2026-07-15 11:31:00.041] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:30:58Z", "value" => "online"} [2026-07-15 11:31:00.066] [DEBUG] QUERY OK db=24.4ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:30:58Z", "online", "network", 47136, ~N[2026-07-15 11:31:00], ~N[2026-07-15 11:31:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:00.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405616, itemkey: "network", value: "online", timestamp: "2026-07-15T11:30:58Z", message: nil, status_log_id: 47136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:00], updated_at: ~N[2026-07-15 11:31:00]}} [2026-07-15 11:31:00.066] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:31:00.116] [DEBUG] QUERY OK source="tms_terminals" db=49.1ms idle=26.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:31:00], 11] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 11:31:09.362] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:31:09.362] [INFO ] Incoming JSON payload: {"oid":"b1498327-7ef8-4bd9-9da8-5a12cb4c4f89","sn":"98250623730001","uploadTime":"2026-07-15T02:40:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:40:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:40: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:31:09.364] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b1498327-7ef8-4bd9-9da8-5a12cb4c4f89", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:40:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:40:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:40:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:40:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:40:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:40:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:40:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:40: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:40:59Z", "vendor" => "morefun"} [2026-07-15 11:31:09.364] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:31:09.364] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:31:09.364] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:31:09.365] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1063.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-15 11:31:09.366] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=575.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-15 11:31:09.366] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:31:09.366] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:31:09.367] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:31:09.437] [DEBUG] QUERY OK source="tms_terminals" db=69.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:31:09], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:31:09.437] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:31:09.438] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=70.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:31:09.449] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:31:09], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:31:09.486] [DEBUG] QUERY OK db=36.0ms idle=11.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b1498327-7ef8-4bd9-9da8-5a12cb4c4f89", "2026-07-15T02:40:59Z", ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:31:09.486] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47137, oid: "b1498327-7ef8-4bd9-9da8-5a12cb4c4f89", upload_time: "2026-07-15T02:40:59Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]} [2026-07-15 11:31:09.486] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:40:59Z", "value" => "morefun"} [2026-07-15 11:31:09.509] [DEBUG] QUERY OK db=22.7ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "morefun", "vendor", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405617, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.510] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:40:59Z", "value" => "kiosk_launcher"} [2026-07-15 11:31:09.543] [DEBUG] QUERY OK db=33.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "kiosk_launcher", "model", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405618, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.544] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:40:59Z", "value" => "1.0"} [2026-07-15 11:31:09.567] [DEBUG] QUERY OK db=22.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "1.0", "app_version", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405619, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.567] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:40:59Z", "value" => "13"} [2026-07-15 11:31:09.600] [DEBUG] QUERY OK db=32.9ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "13", "android_version", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405620, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.601] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "933"} [2026-07-15 11:31:09.631] [DEBUG] QUERY OK db=29.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "933", "ram_free_mb", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405621, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.631] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:40:59Z", "value" => "WIFI"} [2026-07-15 11:31:09.652] [DEBUG] QUERY OK db=20.2ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "WIFI", "network_type", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405622, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.652] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:40:59Z", "value" => "true"} [2026-07-15 11:31:09.685] [DEBUG] QUERY OK db=32.6ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "true", "kiosk_active", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405623, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.686] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:40:59Z", "value" => ""} [2026-07-15 11:31:09.722] [DEBUG] QUERY OK db=35.5ms queue=0.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:40:59Z", "sim_operator", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405624, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.722] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"} [2026-07-15 11:31:09.734] [DEBUG] QUERY OK db=11.4ms 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-15T02:40:59Z", "UNKNOWN", "sim_number", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405625, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.734] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"} [2026-07-15 11:31:09.808] [DEBUG] QUERY OK db=72.7ms queue=0.1ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "UNKNOWN", "sim_iccid", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405626, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.808] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"} [2026-07-15 11:31:09.943] [DEBUG] QUERY OK db=135.0ms queue=0.1ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "UNKNOWN", "sim_imsi", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405627, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.944] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"} [2026-07-15 11:31:09.973] [DEBUG] QUERY OK db=28.6ms idle=136.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "UNKNOWN", "sim_iccid2", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:09.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405628, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:09.973] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:40:59Z", "value" => "UNKNOWN"} [2026-07-15 11:31:10.010] [DEBUG] QUERY OK db=36.5ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "UNKNOWN", "sim_imsi2", 47137, ~N[2026-07-15 11:31:09], ~N[2026-07-15 11:31:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:10.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405629, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:09], updated_at: ~N[2026-07-15 11:31:09]}} [2026-07-15 11:31:10.011] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "13"} [2026-07-15 11:31:10.044] [DEBUG] QUERY OK db=32.4ms queue=0.4ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "13", "data_usage_mb", 47137, ~N[2026-07-15 11:31:10], ~N[2026-07-15 11:31:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:10.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405630, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:10], updated_at: ~N[2026-07-15 11:31:10]}} [2026-07-15 11:31:10.045] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:40:59Z", "value" => "0"} [2026-07-15 11:31:10.091] [DEBUG] QUERY OK db=45.8ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40:59Z", "0", "mobile_data_mb", 47137, ~N[2026-07-15 11:31:10], ~N[2026-07-15 11:31:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:10.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405631, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:10], updated_at: ~N[2026-07-15 11:31:10]}} [2026-07-15 11:31:10.092] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:40: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:31:10.118] [DEBUG] QUERY OK db=25.3ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:40: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47137, ~N[2026-07-15 11:31:10], ~N[2026-07-15 11:31:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:31:10.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405632, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:40:59Z", message: nil, status_log_id: 47137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:31:10], updated_at: ~N[2026-07-15 11:31:10]}} [2026-07-15 11:32:48.894] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:32:48.894] [INFO ] Incoming JSON payload: {"oid":"172cc0fa-687a-4794-a432-961273948f19","sn":"98250623730001","uploadTime":"2026-07-15T02:42:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:42:38Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:32:48.896] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "172cc0fa-687a-4794-a432-961273948f19", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:42:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:42:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:42:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:42:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:42:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:42:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:42:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:42:38Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:42:38Z", "vendor" => "morefun"} [2026-07-15 11:32:48.896] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:32:48.896] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:32:48.896] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:32:48.897] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=593.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-15 11:32:48.898] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=88.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-15 11:32:48.898] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:32:48.899] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:32:48.900] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:32:48.921] [DEBUG] QUERY OK source="tms_terminals" db=20.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:32:48], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:32:48.921] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:32:48.922] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:32:48.967] [DEBUG] QUERY OK source="tms_terminals" db=44.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:32:48], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:32:49.001] [DEBUG] QUERY OK db=32.6ms idle=45.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "172cc0fa-687a-4794-a432-961273948f19", "2026-07-15T02:42:38Z", ~N[2026-07-15 11:32:48], ~N[2026-07-15 11:32:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:32:49.001] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47138, oid: "172cc0fa-687a-4794-a432-961273948f19", upload_time: "2026-07-15T02:42:38Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:48], updated_at: ~N[2026-07-15 11:32:48]} [2026-07-15 11:32:49.001] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:42:38Z", "value" => "morefun"} [2026-07-15 11:32:49.036] [DEBUG] QUERY OK db=34.5ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "morefun", "vendor", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405633, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.036] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:42:38Z", "value" => "kiosk_launcher"} [2026-07-15 11:32:49.060] [DEBUG] QUERY OK db=22.8ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "kiosk_launcher", "model", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405634, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.060] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:42:38Z", "value" => "1.0"} [2026-07-15 11:32:49.083] [DEBUG] QUERY OK db=22.4ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "1.0", "app_version", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405635, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.084] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:42:38Z", "value" => "13"} [2026-07-15 11:32:49.108] [DEBUG] QUERY OK db=23.7ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "13", "android_version", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405636, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.109] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "931"} [2026-07-15 11:32:49.156] [DEBUG] QUERY OK db=47.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "931", "ram_free_mb", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405637, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.157] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:42:38Z", "value" => "WIFI"} [2026-07-15 11:32:49.179] [DEBUG] QUERY OK db=22.3ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "WIFI", "network_type", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405638, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.180] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:42:38Z", "value" => "true"} [2026-07-15 11:32:49.202] [DEBUG] QUERY OK db=22.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "true", "kiosk_active", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405639, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.203] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:42:38Z", "value" => ""} [2026-07-15 11:32:49.240] [DEBUG] QUERY OK db=36.5ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:42:38Z", "sim_operator", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405640, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.240] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"} [2026-07-15 11:32:49.282] [DEBUG] QUERY OK db=40.6ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "UNKNOWN", "sim_number", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405641, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.283] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"} [2026-07-15 11:32:49.328] [DEBUG] QUERY OK db=45.0ms queue=0.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "UNKNOWN", "sim_iccid", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405642, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.329] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"} [2026-07-15 11:32:49.352] [DEBUG] QUERY OK db=22.4ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "UNKNOWN", "sim_imsi", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405643, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.352] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"} [2026-07-15 11:32:49.386] [DEBUG] QUERY OK db=34.0ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "UNKNOWN", "sim_iccid2", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405644, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.387] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:42:38Z", "value" => "UNKNOWN"} [2026-07-15 11:32:49.434] [DEBUG] QUERY OK db=46.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "UNKNOWN", "sim_imsi2", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405645, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.434] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "13"} [2026-07-15 11:32:49.459] [DEBUG] QUERY OK db=24.6ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "13", "data_usage_mb", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405646, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.459] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:42:38Z", "value" => "0"} [2026-07-15 11:32:49.504] [DEBUG] QUERY OK db=43.7ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "0", "mobile_data_mb", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405647, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:32:49.505] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:42:38Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:32:49.529] [DEBUG] QUERY OK db=23.4ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:42:38Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47138, ~N[2026-07-15 11:32:49], ~N[2026-07-15 11:32:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:32:49.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405648, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:42:38Z", message: nil, status_log_id: 47138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:32:49], updated_at: ~N[2026-07-15 11:32:49]}} [2026-07-15 11:33:36.203] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:33:36.204] [INFO ] Incoming JSON payload: {"oid":"01bc4d5d-d6e1-430f-8c93-45d6c90fad8d","sn":"98250623730001","uploadTime":"2026-07-15T02:43:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:43:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:43: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:33:36.205] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "01bc4d5d-d6e1-430f-8c93-45d6c90fad8d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:43:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:43:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:43:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:43:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:43:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:43:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:43:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:43: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:43:24Z", "vendor" => "morefun"} [2026-07-15 11:33:36.205] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:33:36.205] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:33:36.205] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:33:36.206] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=998.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-15 11:33:36.207] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=901.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-15 11:33:36.207] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:33:36.209] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:33:36.209] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:33:36.254] [DEBUG] QUERY OK source="tms_terminals" db=44.9ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:33:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:33:36.255] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:33:36.256] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=42.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:33:36.302] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:33:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:33:36.321] [DEBUG] QUERY OK db=18.7ms idle=46.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "01bc4d5d-d6e1-430f-8c93-45d6c90fad8d", "2026-07-15T02:43:24Z", ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:33:36.321] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47139, oid: "01bc4d5d-d6e1-430f-8c93-45d6c90fad8d", upload_time: "2026-07-15T02:43:24Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]} [2026-07-15 11:33:36.321] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:43:24Z", "value" => "morefun"} [2026-07-15 11:33:36.371] [DEBUG] QUERY OK db=49.0ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "morefun", "vendor", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405649, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.371] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:43:24Z", "value" => "kiosk_launcher"} [2026-07-15 11:33:36.401] [DEBUG] QUERY OK db=29.2ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "kiosk_launcher", "model", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405650, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.401] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:43:24Z", "value" => "1.0"} [2026-07-15 11:33:36.439] [DEBUG] QUERY OK db=37.2ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "1.0", "app_version", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405651, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.439] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:43:24Z", "value" => "13"} [2026-07-15 11:33:36.462] [DEBUG] QUERY OK db=22.9ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "13", "android_version", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405652, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.463] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "938"} [2026-07-15 11:33:36.483] [DEBUG] QUERY OK db=20.0ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "938", "ram_free_mb", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405653, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.484] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:43:24Z", "value" => "WIFI"} [2026-07-15 11:33:36.525] [DEBUG] QUERY OK db=40.5ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "WIFI", "network_type", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405654, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.525] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:43:24Z", "value" => "true"} [2026-07-15 11:33:36.550] [DEBUG] QUERY OK db=23.7ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "true", "kiosk_active", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405655, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.551] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:43:24Z", "value" => ""} [2026-07-15 11:33:36.580] [DEBUG] QUERY OK db=28.5ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:43:24Z", "sim_operator", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405656, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.581] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"} [2026-07-15 11:33:36.625] [DEBUG] QUERY OK db=42.9ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "UNKNOWN", "sim_number", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405657, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.625] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"} [2026-07-15 11:33:36.649] [DEBUG] QUERY OK db=23.3ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "UNKNOWN", "sim_iccid", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405658, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.649] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"} [2026-07-15 11:33:36.693] [DEBUG] QUERY OK db=43.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "UNKNOWN", "sim_imsi", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405659, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.693] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"} [2026-07-15 11:33:36.716] [DEBUG] QUERY OK db=23.0ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "UNKNOWN", "sim_iccid2", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405660, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.717] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:43:24Z", "value" => "UNKNOWN"} [2026-07-15 11:33:36.740] [DEBUG] QUERY OK db=23.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "UNKNOWN", "sim_imsi2", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405661, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.741] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "13"} [2026-07-15 11:33:36.780] [DEBUG] QUERY OK db=39.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "13", "data_usage_mb", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405662, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.781] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:43:24Z", "value" => "0"} [2026-07-15 11:33:36.835] [DEBUG] QUERY OK db=53.6ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43:24Z", "0", "mobile_data_mb", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:36.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405663, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:36.837] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:43: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:33:37.031] [DEBUG] QUERY OK db=193.0ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:43: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47139, ~N[2026-07-15 11:33:36], ~N[2026-07-15 11:33:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:33:37.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405664, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:43:24Z", message: nil, status_log_id: 47139, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:33:36], updated_at: ~N[2026-07-15 11:33:36]}} [2026-07-15 11:33:50.469] [INFO ] Running offline device check... [2026-07-15 11:33:50.469] [INFO ] Starting offline device check... [2026-07-15 11:33:50.471] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms idle=221.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 11:33:50.478] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.3ms idle=167.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:33:50.483] [INFO ] Starting scheduled rule validation [2026-07-15 11:33:50.483] [DEBUG] Validating missing assignments [2026-07-15 11:33:50.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.485] [DEBUG] QUERY OK source="terminal_group_rules" db=1.6ms idle=5.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-07-15 11:33:50.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.487] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.487] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.3ms idle=0.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-07-15 11:33:50.488] [DEBUG] Re-applied 0 rules during validation [2026-07-15 11:33:50.488] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.488] [DEBUG] Validating invalid assignments [2026-07-15 11:33:50.488] [DEBUG] Validating rule consistency [2026-07-15 11:33:50.488] [DEBUG] Updating group terminal counts [2026-07-15 11:33:50.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.490] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.497] [DEBUG] QUERY OK source="terminal_groups" db=0.9ms queue=1.5ms idle=0.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-15 11:33:50.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.499] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.6ms 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-15 11:33:50.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.505] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=1.0ms idle=3.8ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-07-15 11:33:50.505] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.3ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-07-15 11:33:50.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.509] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms queue=2.1ms idle=0.1ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-07-15 11:33:50.511] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=0.4ms idle=0.1ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-07-15 11:33:50.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 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-15 11:33:50.513] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=1.1ms idle=0.9ms 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-15 11:33:50.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.514] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.515] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=0.4ms idle=0.2ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-07-15 11:33:50.515] [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-15 11:33:50.516] [INFO ] Rule validation completed - applied 0 fixes [2026-07-15 11:33:50.516] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=20.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:33:50.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.543] [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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=16.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:33:50.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:33:50.584] [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-15 11:33:50.585] [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-15 11:33:50.585] [INFO ] Offline device check completed. Found 39 offline devices, updated 0 statuses. [2026-07-15 11:33:50.585] [INFO ] Offline device check completed successfully [2026-07-15 11:34:19.568] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 11:34:19.568] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T15:34:17Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T15:34:17Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T15:34:17Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T15:34:17Z","message":""},{"itemkey":"network","value":"offline","timestamp":"2026-07-15T15:34:17Z","message":""}]} [2026-07-15 11:34:19.568] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:34:17Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => "offline"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T15:34:17Z"} [2026-07-15 11:34:19.568] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:34:19.570] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=629.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:34:19.570] [INFO ] Terminal updated: 61250424798001 [2026-07-15 11:34:19.607] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=230.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:34:19], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:34:19.609] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.9ms idle=36.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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:34:19.638] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:34:19], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:34:19.681] [DEBUG] QUERY OK db=42.8ms idle=29.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T15:34:17Z", ~N[2026-07-15 11:34:19], ~N[2026-07-15 11:34:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:34:19.681] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47140, oid: "org-id-placeholder", upload_time: "2026-07-15T15:34:17Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:34:19], updated_at: ~N[2026-07-15 11:34:19]} [2026-07-15 11:34:19.682] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => 29} [2026-07-15 11:34:19.705] [DEBUG] QUERY OK db=22.7ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:34:17Z", "29", "battery", 47140, ~N[2026-07-15 11:34:19], ~N[2026-07-15 11:34:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:34:19.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405665, itemkey: "battery", value: "29", timestamp: "2026-07-15T15:34:17Z", message: nil, status_log_id: 47140, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:34:19], updated_at: ~N[2026-07-15 11:34:19]}} [2026-07-15 11:34:19.706] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:34:17Z", "value" => 50} [2026-07-15 11:34:19.747] [DEBUG] QUERY OK db=40.5ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T15:34:17Z", "50", "memory", 47140, ~N[2026-07-15 11:34:19], ~N[2026-07-15 11:34:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:34:19.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405666, itemkey: "memory", value: "50", timestamp: "2026-07-15T15:34:17Z", message: "Normal", status_log_id: 47140, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:34:19], updated_at: ~N[2026-07-15 11:34:19]}} [2026-07-15 11:34:19.747] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => 50} [2026-07-15 11:34:19.771] [DEBUG] QUERY OK db=23.1ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:34:17Z", "50", "cpu", 47140, ~N[2026-07-15 11:34:19], ~N[2026-07-15 11:34:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:34:19.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405667, itemkey: "cpu", value: "50", timestamp: "2026-07-15T15:34:17Z", message: nil, status_log_id: 47140, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:34:19], updated_at: ~N[2026-07-15 11:34:19]}} [2026-07-15 11:34:19.772] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:34:17Z", "value" => "offline"} [2026-07-15 11:34:19.799] [DEBUG] QUERY OK db=27.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:34:17Z", "offline", "network", 47140, ~N[2026-07-15 11:34:19], ~N[2026-07-15 11:34:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:34:19.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405668, itemkey: "network", value: "offline", timestamp: "2026-07-15T15:34:17Z", message: nil, status_log_id: 47140, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:34:19], updated_at: ~N[2026-07-15 11:34:19]}} [2026-07-15 11:34:19.800] [INFO ] Setting terminal 61250424798001 status to 'offline' from network itemkey [2026-07-15 11:35:03.862] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:35:03.862] [INFO ] Incoming JSON payload: {"oid":"0cd400d9-a7d0-424d-ad31-d10d66f9120e","sn":"98250623730001","uploadTime":"2026-07-15T02:44:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"ram_free_mb","value":"939","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:44:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:35:03.864] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0cd400d9-a7d0-424d-ad31-d10d66f9120e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:44:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:44:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:44:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:44:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "939"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:44:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:44:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:44:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:44:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:44:53Z", "vendor" => "morefun"} [2026-07-15 11:35:03.865] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:35:03.865] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:35:03.865] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:35:03.872] [DEBUG] QUERY OK source="parameter_templates" db=7.0ms idle=401.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-15 11:35:03.876] [DEBUG] QUERY OK source="parameter_templates" db=3.7ms idle=111.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-15 11:35:03.876] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:35:03.880] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.8ms idle=6.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:35:03.880] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:35:03.922] [DEBUG] QUERY OK source="tms_terminals" db=41.3ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:35:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:35:03.922] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:35:03.923] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=42.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:35:03.954] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:35:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:35:04.001] [DEBUG] QUERY OK db=46.0ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "0cd400d9-a7d0-424d-ad31-d10d66f9120e", "2026-07-15T02:44:53Z", ~N[2026-07-15 11:35:03], ~N[2026-07-15 11:35:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:35:04.002] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47141, oid: "0cd400d9-a7d0-424d-ad31-d10d66f9120e", upload_time: "2026-07-15T02:44:53Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:03], updated_at: ~N[2026-07-15 11:35:03]} [2026-07-15 11:35:04.002] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:44:53Z", "value" => "morefun"} [2026-07-15 11:35:04.026] [DEBUG] QUERY OK db=22.8ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "morefun", "vendor", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405669, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.026] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:44:53Z", "value" => "kiosk_launcher"} [2026-07-15 11:35:04.049] [DEBUG] QUERY OK db=23.1ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "kiosk_launcher", "model", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405670, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.051] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:44:53Z", "value" => "1.0"} [2026-07-15 11:35:04.103] [DEBUG] QUERY OK db=51.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "1.0", "app_version", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405671, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.106] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:44:53Z", "value" => "13"} [2026-07-15 11:35:04.144] [DEBUG] QUERY OK db=37.5ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "13", "android_version", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405672, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.145] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "939"} [2026-07-15 11:35:04.188] [DEBUG] QUERY OK db=42.7ms queue=0.1ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "939", "ram_free_mb", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405673, itemkey: "ram_free_mb", value: "939", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.188] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:44:53Z", "value" => "WIFI"} [2026-07-15 11:35:04.200] [DEBUG] QUERY OK db=11.9ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "WIFI", "network_type", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405674, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.201] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:44:53Z", "value" => "true"} [2026-07-15 11:35:04.248] [DEBUG] QUERY OK db=46.9ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "true", "kiosk_active", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405675, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.250] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:44:53Z", "value" => ""} [2026-07-15 11:35:04.283] [DEBUG] QUERY OK db=33.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:44:53Z", "sim_operator", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405676, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.284] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"} [2026-07-15 11:35:04.327] [DEBUG] QUERY OK db=41.1ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "UNKNOWN", "sim_number", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405677, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.327] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"} [2026-07-15 11:35:04.353] [DEBUG] QUERY OK db=25.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "UNKNOWN", "sim_iccid", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405678, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.353] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"} [2026-07-15 11:35:04.394] [DEBUG] QUERY OK db=38.1ms queue=2.4ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "UNKNOWN", "sim_imsi", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405679, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.395] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"} [2026-07-15 11:35:04.425] [DEBUG] QUERY OK db=29.5ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "UNKNOWN", "sim_iccid2", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405680, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:44:53Z", "value" => "UNKNOWN"} [2026-07-15 11:35:04.452] [DEBUG] QUERY OK db=26.7ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "UNKNOWN", "sim_imsi2", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405681, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.453] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "13"} [2026-07-15 11:35:04.500] [DEBUG] QUERY OK db=42.7ms queue=4.4ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "13", "data_usage_mb", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405682, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.500] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:44:53Z", "value" => "0"} [2026-07-15 11:35:04.550] [DEBUG] QUERY OK db=43.5ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "0", "mobile_data_mb", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405683, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:35:04.552] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:44:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:35:04.605] [DEBUG] QUERY OK db=51.0ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:44:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47141, ~N[2026-07-15 11:35:04], ~N[2026-07-15 11:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:35:04.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405684, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:44:53Z", message: nil, status_log_id: 47141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:35:04], updated_at: ~N[2026-07-15 11:35:04]}} [2026-07-15 11:36:13.536] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:36:13.536] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:36:12Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:36:12Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:36:12Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:36:12Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:36:12Z","message":""}]} [2026-07-15 11:36:13.537] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:36:12Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:36:12Z"} [2026-07-15 11:36:13.537] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:36:13.538] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1222.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:36:13.539] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:36:13.558] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms idle=882.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:36:13], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:36:13.559] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=19.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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:36:13.600] [DEBUG] QUERY OK source="tms_terminals" db=40.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:36:13], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:36:13.629] [DEBUG] QUERY OK db=28.4ms idle=41.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:36:12Z", ~N[2026-07-15 11:36:13], ~N[2026-07-15 11:36:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:36:13.630] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47142, oid: "org-id-placeholder", upload_time: "2026-07-15T11:36:12Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:13], updated_at: ~N[2026-07-15 11:36:13]} [2026-07-15 11:36:13.630] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => 28} [2026-07-15 11:36:13.664] [DEBUG] QUERY OK db=33.9ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:36:12Z", "28", "battery", 47142, ~N[2026-07-15 11:36:13], ~N[2026-07-15 11:36:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:13.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405685, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:36:12Z", message: nil, status_log_id: 47142, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:13], updated_at: ~N[2026-07-15 11:36:13]}} [2026-07-15 11:36:13.665] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:36:12Z", "value" => 50} [2026-07-15 11:36:13.679] [DEBUG] QUERY OK db=13.6ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:36:12Z", "50", "memory", 47142, ~N[2026-07-15 11:36:13], ~N[2026-07-15 11:36:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:13.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405686, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:36:12Z", message: "Normal", status_log_id: 47142, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:13], updated_at: ~N[2026-07-15 11:36:13]}} [2026-07-15 11:36:13.680] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => 50} [2026-07-15 11:36:13.703] [DEBUG] QUERY OK db=22.3ms queue=0.4ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:36:12Z", "50", "cpu", 47142, ~N[2026-07-15 11:36:13], ~N[2026-07-15 11:36:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:13.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405687, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:36:12Z", message: nil, status_log_id: 47142, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:13], updated_at: ~N[2026-07-15 11:36:13]}} [2026-07-15 11:36:13.703] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:36:12Z", "value" => "online"} [2026-07-15 11:36:13.726] [DEBUG] QUERY OK db=22.8ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:36:12Z", "online", "network", 47142, ~N[2026-07-15 11:36:13], ~N[2026-07-15 11:36:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:13.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405688, itemkey: "network", value: "online", timestamp: "2026-07-15T11:36:12Z", message: nil, status_log_id: 47142, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:13], updated_at: ~N[2026-07-15 11:36:13]}} [2026-07-15 11:36:13.727] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:36:52.094] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:36:52.094] [INFO ] Incoming JSON payload: {"oid":"624c5f32-10a4-4c20-bdd4-9cf858afd615","sn":"98250623730001","uploadTime":"2026-07-15T02:46:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"ram_free_mb","value":"940","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:46:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:36:52.096] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "624c5f32-10a4-4c20-bdd4-9cf858afd615", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:46:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:46:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:46:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:46:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "940"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:46:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:46:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:46:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:46:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:46:42Z", "vendor" => "morefun"} [2026-07-15 11:36:52.096] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:36:52.096] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:36:52.096] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:36:52.097] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1338.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-15 11:36:52.097] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=337.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-15 11:36:52.097] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:36:52.099] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:36:52.099] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:36:52.133] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:36:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:36:52.133] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:36:52.134] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=34.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:36:52.165] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:36:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:36:52.190] [DEBUG] QUERY OK db=24.5ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "624c5f32-10a4-4c20-bdd4-9cf858afd615", "2026-07-15T02:46:42Z", ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:36:52.191] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47143, oid: "624c5f32-10a4-4c20-bdd4-9cf858afd615", upload_time: "2026-07-15T02:46:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]} [2026-07-15 11:36:52.191] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:46:42Z", "value" => "morefun"} [2026-07-15 11:36:52.220] [DEBUG] QUERY OK db=29.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "morefun", "vendor", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405689, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.221] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:46:42Z", "value" => "kiosk_launcher"} [2026-07-15 11:36:52.258] [DEBUG] QUERY OK db=36.8ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "kiosk_launcher", "model", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405690, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.259] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:46:42Z", "value" => "1.0"} [2026-07-15 11:36:52.285] [DEBUG] QUERY OK db=26.4ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "1.0", "app_version", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405691, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.286] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:46:42Z", "value" => "13"} [2026-07-15 11:36:52.309] [DEBUG] QUERY OK db=22.8ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "13", "android_version", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405692, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.310] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "940"} [2026-07-15 11:36:52.333] [DEBUG] QUERY OK db=22.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "940", "ram_free_mb", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405693, itemkey: "ram_free_mb", value: "940", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.333] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:46:42Z", "value" => "WIFI"} [2026-07-15 11:36:52.362] [DEBUG] QUERY OK db=28.8ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "WIFI", "network_type", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405694, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.362] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:46:42Z", "value" => "true"} [2026-07-15 11:36:52.388] [DEBUG] QUERY OK db=24.9ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "true", "kiosk_active", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405695, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.388] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:46:42Z", "value" => ""} [2026-07-15 11:36:52.413] [DEBUG] QUERY OK db=24.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:46:42Z", "sim_operator", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405696, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.414] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"} [2026-07-15 11:36:52.447] [DEBUG] QUERY OK db=32.7ms 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-15T02:46:42Z", "UNKNOWN", "sim_number", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405697, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.447] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"} [2026-07-15 11:36:52.480] [DEBUG] QUERY OK db=31.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "UNKNOWN", "sim_iccid", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405698, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.480] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"} [2026-07-15 11:36:52.509] [DEBUG] QUERY OK db=28.0ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "UNKNOWN", "sim_imsi", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405699, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"} [2026-07-15 11:36:52.542] [DEBUG] QUERY OK db=31.8ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "UNKNOWN", "sim_iccid2", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405700, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.542] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:46:42Z", "value" => "UNKNOWN"} [2026-07-15 11:36:52.576] [DEBUG] QUERY OK db=32.8ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "UNKNOWN", "sim_imsi2", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405701, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.576] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "13"} [2026-07-15 11:36:52.600] [DEBUG] QUERY OK db=23.3ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "13", "data_usage_mb", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405702, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.600] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:46:42Z", "value" => "0"} [2026-07-15 11:36:52.632] [DEBUG] QUERY OK db=31.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "0", "mobile_data_mb", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405703, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:36:52.633] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:46:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:36:52.666] [DEBUG] QUERY OK db=32.6ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:46:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47143, ~N[2026-07-15 11:36:52], ~N[2026-07-15 11:36:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:36:52.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405704, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:46:42Z", message: nil, status_log_id: 47143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:36:52], updated_at: ~N[2026-07-15 11:36:52]}} [2026-07-15 11:37:00.850] [INFO ] GET / [2026-07-15 11:37:00.850] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-15 11:37:00.873] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=3.9ms idle=415.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)) [<<127, 49, 42, 242, 79, 181, 92, 193, 230, 112, 170, 20, 234, 31, 204, 92, 154, 65, 105, 248, 216, 6, 176, 163, 44, 56, 93, 241, 140, 89, 234, 247>>, "session", ~U[2026-07-15 11:37:00.861522Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 11:37:00.876] [INFO ] Sent 200 in 25ms [2026-07-15 11:37:07.273] [INFO ] GET /images/favicon.png [2026-07-15 11:37:07.297] [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-15 11:37:11.011] [INFO ] POST /users/log_out [2026-07-15 11:37:11.011] [DEBUG] Processing with PlatformWeb.UserSessionController.delete/2 Parameters: %{"_csrf_token" => "fxFzFWEwOhcuMiNFNi0RDhJWE3oXcAE1Ra0oRrwXY_eqdZzXd2b4e7BG", "_method" => "delete"} Pipelines: [:browser] [2026-07-15 11:37:11.013] [DEBUG] QUERY OK source="users_tokens" db=1.5ms idle=557.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)) [<<127, 49, 42, 242, 79, 181, 92, 193, 230, 112, 170, 20, 234, 31, 204, 92, 154, 65, 105, 248, 216, 6, 176, 163, 44, 56, 93, 241, 140, 89, 234, 247>>, "session", ~U[2026-07-15 11:37:11.011765Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 11:37:11.034] [DEBUG] QUERY OK source="users_tokens" db=16.8ms queue=0.3ms idle=563.1ms DELETE u0.* FROM `users_tokens` AS u0 WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) [<<127, 49, 42, 242, 79, 181, 92, 193, 230, 112, 170, 20, 234, 31, 204, 92, 154, 65, 105, 248, 216, 6, 176, 163, 44, 56, 93, 241, 140, 89, 234, 247>>, "session"] ↳ DaProductApp.Users.delete_user_session_token/1, at: lib/da_product_app/users.ex:328 [2026-07-15 11:37:11.044] [INFO ] Sent 302 in 33ms [2026-07-15 11:37:11.350] [INFO ] GET / [2026-07-15 11:37:11.350] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-15 11:37:11.358] [INFO ] Sent 200 in 7ms [2026-07-15 11:37:14.784] [INFO ] GET /users/log_in [2026-07-15 11:37:14.784] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-07-15 11:37:14.836] [INFO ] Sent 200 in 52ms [2026-07-15 11:37:15.700] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "ABFWHSsBHGYUHFIAAhZAPlkQHRw0Mwg1YtagOor7YQ0w7ItGmdGzRuGY", "_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-15 11:37:15.901] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "Ye7zdnnQMMbw5_4y4tZffFOl"} [2026-07-15 11:37:15.901] [DEBUG] Replied in 207µs [2026-07-15 11:37:22.301] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:37:22.302] [INFO ] Incoming JSON payload: {"oid":"decdd264-2687-4916-81d1-ddcc1808fd62","sn":"98250623730001","uploadTime":"2026-07-15T02:47:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:47:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:37:22.303] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "decdd264-2687-4916-81d1-ddcc1808fd62", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:47:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:47:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:47:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:47:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:47:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:47:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:47:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:47:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:47:12Z", "vendor" => "morefun"} [2026-07-15 11:37:22.303] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:37:22.303] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:37:22.303] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:37:22.304] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1465.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-15 11:37:22.305] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=464.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-15 11:37:22.305] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:37:22.306] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:37:22.306] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:37:22.327] [DEBUG] QUERY OK source="tms_terminals" db=20.7ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:37:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:37:22.327] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:37:22.328] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=21.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:37:22.365] [DEBUG] QUERY OK source="tms_terminals" db=36.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:37:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:37:22.399] [DEBUG] QUERY OK db=33.4ms idle=37.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "decdd264-2687-4916-81d1-ddcc1808fd62", "2026-07-15T02:47:12Z", ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:37:22.400] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47144, oid: "decdd264-2687-4916-81d1-ddcc1808fd62", upload_time: "2026-07-15T02:47:12Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]} [2026-07-15 11:37:22.400] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:47:12Z", "value" => "morefun"} [2026-07-15 11:37:22.426] [DEBUG] QUERY OK db=25.9ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "morefun", "vendor", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405705, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.427] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:47:12Z", "value" => "kiosk_launcher"} [2026-07-15 11:37:22.439] [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-15T02:47:12Z", "kiosk_launcher", "model", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405706, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.439] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:47:12Z", "value" => "1.0"} [2026-07-15 11:37:22.473] [DEBUG] QUERY OK db=32.7ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "1.0", "app_version", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405707, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.473] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:47:12Z", "value" => "13"} [2026-07-15 11:37:22.498] [DEBUG] QUERY OK db=24.3ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "13", "android_version", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405708, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.498] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "937"} [2026-07-15 11:37:22.528] [DEBUG] QUERY OK db=29.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "937", "ram_free_mb", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405709, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.529] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:47:12Z", "value" => "WIFI"} [2026-07-15 11:37:22.540] [DEBUG] QUERY OK db=10.8ms 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-15T02:47:12Z", "WIFI", "network_type", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405710, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.541] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:47:12Z", "value" => "true"} [2026-07-15 11:37:22.560] [DEBUG] QUERY OK db=19.0ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "true", "kiosk_active", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405711, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.560] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:47:12Z", "value" => ""} [2026-07-15 11:37:22.590] [DEBUG] QUERY OK db=29.5ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:47:12Z", "sim_operator", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405712, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.591] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"} [2026-07-15 11:37:22.624] [DEBUG] QUERY OK db=32.5ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "UNKNOWN", "sim_number", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405713, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.624] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"} [2026-07-15 11:37:22.643] [DEBUG] QUERY OK db=18.0ms 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-15T02:47:12Z", "UNKNOWN", "sim_iccid", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405714, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.643] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"} [2026-07-15 11:37:22.659] [DEBUG] QUERY OK db=15.0ms queue=0.1ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "UNKNOWN", "sim_imsi", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405715, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.660] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"} [2026-07-15 11:37:22.711] [DEBUG] QUERY OK db=50.4ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "UNKNOWN", "sim_iccid2", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405716, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.711] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:47:12Z", "value" => "UNKNOWN"} [2026-07-15 11:37:22.735] [DEBUG] QUERY OK db=23.1ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "UNKNOWN", "sim_imsi2", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405717, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.735] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "13"} [2026-07-15 11:37:22.755] [DEBUG] QUERY OK db=19.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "13", "data_usage_mb", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405718, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.756] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:47:12Z", "value" => "0"} [2026-07-15 11:37:22.769] [DEBUG] QUERY OK db=12.7ms queue=0.1ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "0", "mobile_data_mb", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405719, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:22.770] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:47:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:37:22.795] [DEBUG] QUERY OK db=23.8ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47144, ~N[2026-07-15 11:37:22], ~N[2026-07-15 11:37:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:22.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405720, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:47:12Z", message: nil, status_log_id: 47144, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:22], updated_at: ~N[2026-07-15 11:37:22]}} [2026-07-15 11:37:39.461] [INFO ] POST /users/log_in [2026-07-15 11:37:39.461] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "ABFWHSsBHGYUHFIAAhZAPlkQHRw0Mwg1YtagOor7YQ0w7ItGmdGzRuGY", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-07-15 11:37:39.465] [DEBUG] QUERY OK source="users" db=0.7ms queue=1.4ms idle=1007.0ms SELECT u0.`id`, u0.`email`, u0.`hashed_password`, u0.`confirmed_at`, u0.`role`, u0.`name`, u0.`first_name`, u0.`last_name`, u0.`data`, u0.`inserted_at`, u0.`updated_at` 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-15 11:37:39.750] [DEBUG] QUERY OK db=22.4ms queue=0.5ms idle=1271.8ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, 3, ~U[2026-07-15 11:37:39Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-07-15 11:37:39.751] [INFO ] Sent 302 in 289ms [2026-07-15 11:37:39.766] [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-15 11:37:40.078] [INFO ] GET /dashboard [2026-07-15 11:37:40.079] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-15 11:37:40.080] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=614.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:40.079729Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 11:37:40.089] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=338.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:40.089008Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-07-15 11:37:40.093] [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-15 11:37:40.094] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=1212.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-15 11:37:40.095] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=210.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-07-15 11:37:40.109] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms queue=0.8ms idle=1.5ms 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-15 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-07-15 11:37:40.116] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=1.3ms idle=18.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-07-15 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-07-15 11:37:40.117] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=7.1ms 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-15 11:37:40.120] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.9ms idle=1.6ms 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-15 11:37:40.189] [DEBUG] QUERY OK source="tms_terminals" db=59.1ms queue=1.5ms idle=10.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.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-07-15 11:37:40.197] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms queue=2.5ms idle=74.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-15 00:00:00Z], ~U[2026-07-15 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.200] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=1.6ms idle=9.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 00:00:00Z], ~U[2026-07-15 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.201] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=0.2ms idle=2.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-15 01:00:00Z], ~U[2026-07-15 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.201] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms 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-15 01:00:00Z], ~U[2026-07-15 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.202] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 02:00:00Z], ~U[2026-07-15 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.204] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.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-15 02:00:00Z], ~U[2026-07-15 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.206] [DEBUG] QUERY OK source="ota_configurations" db=1.4ms idle=2.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 03:00:00Z], ~U[2026-07-15 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.207] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 03:00:00Z], ~U[2026-07-15 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.209] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.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-15 04:00:00Z], ~U[2026-07-15 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.210] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 04:00:00Z], ~U[2026-07-15 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.212] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=3.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-15 05:00:00Z], ~U[2026-07-15 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.220] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=4.0ms idle=5.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 05:00:00Z], ~U[2026-07-15 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.222] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms idle=8.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-15 06:00:00Z], ~U[2026-07-15 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.225] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms queue=0.4ms idle=3.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 06:00:00Z], ~U[2026-07-15 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.228] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms idle=4.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-15 07:00:00Z], ~U[2026-07-15 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.228] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 07:00:00Z], ~U[2026-07-15 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.230] [DEBUG] QUERY OK source="ota_configurations" db=1.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-15 08:00:00Z], ~U[2026-07-15 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.232] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 08:00:00Z], ~U[2026-07-15 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.233] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=2.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 09:00:00Z], ~U[2026-07-15 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.234] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 09:00:00Z], ~U[2026-07-15 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.236] [DEBUG] QUERY OK source="ota_configurations" db=1.7ms 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-15 10:00:00Z], ~U[2026-07-15 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.237] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 10:00:00Z], ~U[2026-07-15 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.238] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 11:00:00Z], ~U[2026-07-15 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.239] [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-15 11:00:00Z], ~U[2026-07-15 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.240] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-15 12:00:00Z], ~U[2026-07-15 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.241] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms 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-15 12:00:00Z], ~U[2026-07-15 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.242] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-15 13:00:00Z], ~U[2026-07-15 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.243] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 13:00:00Z], ~U[2026-07-15 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.244] [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-15 14:00:00Z], ~U[2026-07-15 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.245] [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-15 14:00:00Z], ~U[2026-07-15 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.245] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms queue=0.1ms 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-15 15:00:00Z], ~U[2026-07-15 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.246] [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-15 15:00:00Z], ~U[2026-07-15 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.247] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-15 16:00:00Z], ~U[2026-07-15 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.248] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 16:00:00Z], ~U[2026-07-15 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.250] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=0.1ms idle=1.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-15 17:00:00Z], ~U[2026-07-15 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.251] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 17:00:00Z], ~U[2026-07-15 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.252] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=1.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 18:00:00Z], ~U[2026-07-15 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.253] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 18:00:00Z], ~U[2026-07-15 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.254] [DEBUG] QUERY OK source="ota_configurations" db=1.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-15 19:00:00Z], ~U[2026-07-15 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.255] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 19:00:00Z], ~U[2026-07-15 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.257] [DEBUG] QUERY OK source="ota_configurations" db=2.0ms 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-15 20:00:00Z], ~U[2026-07-15 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.258] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 20:00:00Z], ~U[2026-07-15 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.259] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 21:00:00Z], ~U[2026-07-15 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.261] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms 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-15 21:00:00Z], ~U[2026-07-15 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.262] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms idle=1.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 22:00:00Z], ~U[2026-07-15 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.263] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 22:00:00Z], ~U[2026-07-15 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.265] [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-15 23:00:00Z], ~U[2026-07-16 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:40.265] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 23:00:00Z], ~U[2026-07-16 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:40.322] [DEBUG] QUERY OK source="tms_terminals" db=55.4ms queue=1.0ms idle=1.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-15 11:32:40.265851Z], ~U[2026-07-15 11:07:40.265851Z], ~U[2026-07-15 10:37:40.265851Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:40.335] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.6ms queue=0.8ms idle=58.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-15 10:37:40]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-15 11:37:40.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.2ms queue=2.1ms idle=14.1ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 11:36:40]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-15 11:37:40.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.5ms queue=0.5ms idle=22.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:40]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-15 11:37:40.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms queue=0.4ms idle=16.5ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:40]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-15 11:37:40.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms queue=0.4ms idle=12.8ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:40]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-15 11:37:40.395] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms 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-15 11:37:40.453] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms idle=2.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-15 11:32:40.396039Z], ~U[2026-07-15 11:07:40.396039Z], ~U[2026-07-15 10:37:40.396039Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:40.505] [DEBUG] QUERY OK source="tms_terminals" db=51.1ms idle=57.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-15 11:32:40.453552Z], ~U[2026-07-15 11:07:40.453552Z], ~U[2026-07-15 10:37:40.453552Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:40.555] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms idle=52.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-15 11:32:40.505266Z], ~U[2026-07-15 11:07:40.505266Z], ~U[2026-07-15 10:37:40.505266Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:40.604] [DEBUG] QUERY OK source="tms_terminals" db=47.8ms idle=51.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-15 11:32:40.555720Z], ~U[2026-07-15 11:07:40.555720Z], ~U[2026-07-15 10:37:40.555720Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:40.624] [INFO ] Sent 200 in 546ms [2026-07-15 11:37:41.409] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 28µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BwBjcyNwG10_EX0HIzIndyMrOCYdRSB8dl52oBOkTu7AABL6RRrmG5aE", "_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-15 11:37:41.577] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "clVAL2T6kdJFbpkAqyJKZpA9", "live_socket_id" => "users_sessions:a4rVl56xRqXtdskaowrEkA6gNFWW5HlszCod0J-qxl8=", "user_token" => <<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>} [2026-07-15 11:37:41.578] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=121.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:41.578101Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-15 11:37:41.580] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=122.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:41.579152Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-07-15 11:37:41.580] [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-15 11:37:41.580] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=728.3ms 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-15 11:37:41.581] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=694.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-07-15 11:37:41.593] [DEBUG] QUERY OK source="tms_terminals" db=11.9ms idle=0.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-15 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-07-15 11:37:41.595] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms queue=0.1ms idle=12.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-07-15 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-07-15 11:37:41.596] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-07-15 11:37:41.596] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.1ms 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-15 11:37:41.650] [DEBUG] QUERY OK source="tms_terminals" db=52.9ms idle=0.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.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-07-15 11:37:41.651] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=53.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-15 00:00:00Z], ~U[2026-07-15 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.651] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.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-15 00:00:00Z], ~U[2026-07-15 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.652] [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-15 01:00:00Z], ~U[2026-07-15 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.653] [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-15 01:00:00Z], ~U[2026-07-15 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.654] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 02:00:00Z], ~U[2026-07-15 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.654] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 02:00:00Z], ~U[2026-07-15 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.655] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 03:00:00Z], ~U[2026-07-15 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.656] [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-15 03:00:00Z], ~U[2026-07-15 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.657] [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-15 04:00:00Z], ~U[2026-07-15 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.657] [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-15 04:00:00Z], ~U[2026-07-15 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.658] [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-15 05:00:00Z], ~U[2026-07-15 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.659] [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-15 05:00:00Z], ~U[2026-07-15 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.659] [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-15 06:00:00Z], ~U[2026-07-15 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.660] [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-15 06:00:00Z], ~U[2026-07-15 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.660] [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-15 07:00:00Z], ~U[2026-07-15 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.661] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms 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-15 07:00:00Z], ~U[2026-07-15 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.662] [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-15 08:00:00Z], ~U[2026-07-15 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.663] [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-15 08:00:00Z], ~U[2026-07-15 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.665] [DEBUG] QUERY OK source="ota_configurations" db=2.1ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 09:00:00Z], ~U[2026-07-15 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.666] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 09:00:00Z], ~U[2026-07-15 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.667] [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-15 10:00:00Z], ~U[2026-07-15 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.668] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 10:00:00Z], ~U[2026-07-15 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.668] [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-15 11:00:00Z], ~U[2026-07-15 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.670] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 11:00:00Z], ~U[2026-07-15 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.671] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms 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-15 12:00:00Z], ~U[2026-07-15 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.671] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms 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-15 12:00:00Z], ~U[2026-07-15 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.672] [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-15 13:00:00Z], ~U[2026-07-15 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.672] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 13:00:00Z], ~U[2026-07-15 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.673] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-15 14:00:00Z], ~U[2026-07-15 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.673] [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-15 14:00:00Z], ~U[2026-07-15 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.674] [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-15 15:00:00Z], ~U[2026-07-15 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.675] [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-15 15:00:00Z], ~U[2026-07-15 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.675] [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-15 16:00:00Z], ~U[2026-07-15 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.676] [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-15 16:00:00Z], ~U[2026-07-15 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.677] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-15 17:00:00Z], ~U[2026-07-15 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.678] [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-15 17:00:00Z], ~U[2026-07-15 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.678] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-07-15 18:00:00Z], ~U[2026-07-15 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.679] [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-15 18:00:00Z], ~U[2026-07-15 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.680] [DEBUG] QUERY OK source="ota_configurations" db=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-15 19:00:00Z], ~U[2026-07-15 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.680] [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-15 19:00:00Z], ~U[2026-07-15 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.681] [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-15 20:00:00Z], ~U[2026-07-15 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.681] [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-15 20:00:00Z], ~U[2026-07-15 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.682] [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-15 21:00:00Z], ~U[2026-07-15 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.682] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-07-15 21:00:00Z], ~U[2026-07-15 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.683] [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-15 22:00:00Z], ~U[2026-07-15 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.684] [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-15 22:00:00Z], ~U[2026-07-15 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.684] [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-15 23:00:00Z], ~U[2026-07-16 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-07-15 11:37:41.684] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms 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-15 23:00:00Z], ~U[2026-07-16 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-07-15 11:37:41.736] [DEBUG] QUERY OK source="tms_terminals" db=51.3ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-07-15 11:32:41.685037Z], ~U[2026-07-15 11:07:41.685037Z], ~U[2026-07-15 10:37:41.685037Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:41.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=52.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-15 10:37:41]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-07-15 11:37:41.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.7ms idle=12.1ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 11:36:41]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-07-15 11:37:41.770] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms idle=11.6ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:41]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-07-15 11:37:41.781] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=11.6ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:41]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-07-15 11:37:41.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.0ms idle=10.8ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-07-15 10:37:41]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-07-15 11:37:41.792] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=10.7ms 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-15 11:37:41.845] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=0.1ms idle=1.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-15 11:32:41.792684Z], ~U[2026-07-15 11:07:41.792684Z], ~U[2026-07-15 10:37:41.792684Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:41.893] [DEBUG] QUERY OK source="tms_terminals" db=47.4ms idle=53.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-15 11:32:41.845611Z], ~U[2026-07-15 11:07:41.845611Z], ~U[2026-07-15 10:37:41.845611Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:41.939] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms idle=4.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-15 11:32:41.893633Z], ~U[2026-07-15 11:07:41.893633Z], ~U[2026-07-15 10:37:41.893633Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:41.987] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms idle=46.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-15 11:32:41.939781Z], ~U[2026-07-15 11:07:41.939781Z], ~U[2026-07-15 10:37:41.939781Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-07-15 11:37:41.988] [DEBUG] Replied in 410ms [2026-07-15 11:37:52.169] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "clVAL2T6kdJFbpkAqyJKZpA9", "live_socket_id" => "users_sessions:a4rVl56xRqXtdskaowrEkA6gNFWW5HlszCod0J-qxl8=", "user_token" => <<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>} [2026-07-15 11:37:52.170] [DEBUG] QUERY OK source="users_tokens" db=0.4ms queue=0.2ms idle=712.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:52.169552Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-15 11:37:52.172] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1253.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-07-15 11:37:52.181] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=3.3ms idle=257.5ms 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-15 11:37:52.187] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=14.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-15 11:37:52.188] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.6ms idle=6.4ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [42] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-07-15 11:37:52.189] [DEBUG] Replied in 20ms [2026-07-15 11:37:52.189] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:37:52.190] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:37:52.191] [DEBUG] Replied in 1ms [2026-07-15 11:37:52.513] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:37:52.513] [INFO ] Incoming JSON payload: {"oid":"561a8e0e-5068-499b-b633-1a0afcb08c18","sn":"98250623730001","uploadTime":"2026-07-15T02:47:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:47:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:37:52.514] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "561a8e0e-5068-499b-b633-1a0afcb08c18", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:47:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:47:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:47:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:47:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:47:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:47:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:47:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:47:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:47:42Z", "vendor" => "morefun"} [2026-07-15 11:37:52.515] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:37:52.515] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:37:52.515] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:37:52.516] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=327.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-15 11:37:52.517] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=325.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-15 11:37:52.517] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:37:52.518] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:37:52.518] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:37:52.542] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=0.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:37:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:37:52.542] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:37:52.544] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=24.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:37:52.573] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=0.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:37:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:37:52.605] [DEBUG] QUERY OK db=32.1ms queue=0.2ms idle=30.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "561a8e0e-5068-499b-b633-1a0afcb08c18", "2026-07-15T02:47:42Z", ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:37:52.606] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47145, oid: "561a8e0e-5068-499b-b633-1a0afcb08c18", upload_time: "2026-07-15T02:47:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]} [2026-07-15 11:37:52.606] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:47:42Z", "value" => "morefun"} [2026-07-15 11:37:52.617] [DEBUG] QUERY OK db=10.5ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "morefun", "vendor", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405721, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.617] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:47:42Z", "value" => "kiosk_launcher"} [2026-07-15 11:37:52.634] [DEBUG] QUERY OK db=16.3ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "kiosk_launcher", "model", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405722, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.635] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:47:42Z", "value" => "1.0"} [2026-07-15 11:37:52.673] [DEBUG] QUERY OK db=38.1ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "1.0", "app_version", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405723, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.674] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:47:42Z", "value" => "13"} [2026-07-15 11:37:52.700] [DEBUG] QUERY OK db=26.0ms queue=0.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "13", "android_version", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405724, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.701] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "937"} [2026-07-15 11:37:52.718] [DEBUG] QUERY OK db=16.4ms queue=0.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "937", "ram_free_mb", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405725, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.718] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:47:42Z", "value" => "WIFI"} [2026-07-15 11:37:52.730] [DEBUG] QUERY OK db=11.0ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "WIFI", "network_type", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405726, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.730] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:47:42Z", "value" => "true"} [2026-07-15 11:37:52.759] [DEBUG] QUERY OK db=28.3ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "true", "kiosk_active", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405727, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.759] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:47:42Z", "value" => ""} [2026-07-15 11:37:52.795] [DEBUG] QUERY OK db=35.7ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:47:42Z", "sim_operator", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405728, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.795] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"} [2026-07-15 11:37:52.827] [DEBUG] QUERY OK db=30.7ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "UNKNOWN", "sim_number", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405729, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.828] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"} [2026-07-15 11:37:52.867] [DEBUG] QUERY OK db=38.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "UNKNOWN", "sim_iccid", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405730, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.868] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"} [2026-07-15 11:37:52.900] [DEBUG] QUERY OK db=32.2ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "UNKNOWN", "sim_imsi", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405731, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.901] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"} [2026-07-15 11:37:52.921] [DEBUG] QUERY OK db=19.5ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "UNKNOWN", "sim_iccid2", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405732, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.922] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:47:42Z", "value" => "UNKNOWN"} [2026-07-15 11:37:52.959] [DEBUG] QUERY OK db=37.0ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "UNKNOWN", "sim_imsi2", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405733, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.960] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "13"} [2026-07-15 11:37:52.996] [DEBUG] QUERY OK db=35.3ms queue=0.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "13", "data_usage_mb", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:52.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405734, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:52.996] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:47:42Z", "value" => "0"} [2026-07-15 11:37:53.016] [DEBUG] QUERY OK db=19.4ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "0", "mobile_data_mb", 47145, ~N[2026-07-15 11:37:52], ~N[2026-07-15 11:37:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:53.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405735, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:52], updated_at: ~N[2026-07-15 11:37:52]}} [2026-07-15 11:37:53.017] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:47:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:37:53.036] [DEBUG] QUERY OK db=18.4ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:47:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47145, ~N[2026-07-15 11:37:53], ~N[2026-07-15 11:37:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:37:53.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405736, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:47:42Z", message: nil, status_log_id: 47145, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:37:53], updated_at: ~N[2026-07-15 11:37:53]}} [2026-07-15 11:37:53.038] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=21.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:37:53.040] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:34:19]}, %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-15 11:37:57.583] [WARN ] navigate event to "http://demo.ctrmv.com:4059/admin/pos-settlements" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-07-15 11:37:57.866] [INFO ] GET /admin/pos-settlements [2026-07-15 11:37:57.867] [DEBUG] Processing with PlatformWeb.PosSettlementLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-15 11:37:57.868] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=411.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:57.867777Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 11:37:57.882] [DEBUG] QUERY OK source="pos_settlements" db=1.3ms queue=1.6ms idle=944.2ms SELECT count(p0.`id`) FROM `pos_settlements` AS p0 [] ↳ SettlementCore.PosSettlementQueries.list_pos_settlements/1, at: lib/settlement_core/pos_settlement_queries.ex:42 [2026-07-15 11:37:57.890] [DEBUG] QUERY OK source="pos_settlements" db=6.8ms queue=0.5ms idle=559.8ms SELECT p0.`id`, p0.`pos_transaction_id`, p0.`settlement_batch_id`, p0.`settlement_date`, p0.`settlement_status`, p0.`rejection_reason`, p0.`card_type_id`, p0.`scheme_name`, p0.`s_txn_type`, p0.`s_tid`, p0.`s_mid`, p0.`b_tid`, p0.`b_mid`, p0.`b_tid_date`, p0.`b_tid_time`, p0.`b_tid_stan`, p0.`b_tid_invoiceno`, p0.`b_tid_batchno`, p0.`mti`, p0.`proc_code`, p0.`total_amount`, p0.`currency_code`, p0.`approval_code`, p0.`reference_no`, p0.`response_code`, p0.`mcc_code`, p0.`masked_card_no`, p0.`acquirer_id`, p0.`acquirer_reference_no`, p0.`scheme_reference_no`, p0.`created_date_time`, p0.`metadata`, p0.`synced_to_core`, p0.`synced_at`, p0.`inserted_at`, p0.`updated_at` FROM `pos_settlements` AS p0 ORDER BY p0.`settlement_date` DESC, p0.`id` DESC LIMIT 1000 [] ↳ SettlementCore.PosSettlementQueries.list_pos_settlements/1, at: lib/settlement_core/pos_settlement_queries.ex:48 [2026-07-15 11:37:57.892] [DEBUG] QUERY OK source="pos_settlements" db=0.3ms queue=0.3ms idle=9.3ms SELECT DISTINCT p0.`scheme_name` FROM `pos_settlements` AS p0 [] ↳ SettlementCore.PosSettlementQueries.filter_options/0, at: lib/settlement_core/pos_settlement_queries.ex:63 [2026-07-15 11:37:57.895] [INFO ] Sent 200 in 28ms [2026-07-15 11:37:58.687] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JB8iOztDbHgDBToOLCUiNBURc301QCNrGstzwq8NhapHNUIudh96o0bR", "_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-15 11:37:58.868] [DEBUG] MOUNT PlatformWeb.PosSettlementLive.Index Parameters: %{} Session: %{"_csrf_token" => "clVAL2T6kdJFbpkAqyJKZpA9", "live_socket_id" => "users_sessions:a4rVl56xRqXtdskaowrEkA6gNFWW5HlszCod0J-qxl8=", "user_token" => <<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>} [2026-07-15 11:37:58.869] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.1ms idle=1412.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:37:58.868776Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-15 11:37:58.870] [DEBUG] QUERY OK source="pos_settlements" db=0.6ms idle=977.5ms SELECT count(p0.`id`) FROM `pos_settlements` AS p0 [] ↳ SettlementCore.PosSettlementQueries.list_pos_settlements/1, at: lib/settlement_core/pos_settlement_queries.ex:42 [2026-07-15 11:37:58.871] [DEBUG] QUERY OK source="pos_settlements" db=0.9ms idle=930.4ms SELECT p0.`id`, p0.`pos_transaction_id`, p0.`settlement_batch_id`, p0.`settlement_date`, p0.`settlement_status`, p0.`rejection_reason`, p0.`card_type_id`, p0.`scheme_name`, p0.`s_txn_type`, p0.`s_tid`, p0.`s_mid`, p0.`b_tid`, p0.`b_mid`, p0.`b_tid_date`, p0.`b_tid_time`, p0.`b_tid_stan`, p0.`b_tid_invoiceno`, p0.`b_tid_batchno`, p0.`mti`, p0.`proc_code`, p0.`total_amount`, p0.`currency_code`, p0.`approval_code`, p0.`reference_no`, p0.`response_code`, p0.`mcc_code`, p0.`masked_card_no`, p0.`acquirer_id`, p0.`acquirer_reference_no`, p0.`scheme_reference_no`, p0.`created_date_time`, p0.`metadata`, p0.`synced_to_core`, p0.`synced_at`, p0.`inserted_at`, p0.`updated_at` FROM `pos_settlements` AS p0 ORDER BY p0.`settlement_date` DESC, p0.`id` DESC LIMIT 1000 [] ↳ SettlementCore.PosSettlementQueries.list_pos_settlements/1, at: lib/settlement_core/pos_settlement_queries.ex:48 [2026-07-15 11:37:58.873] [DEBUG] QUERY OK source="pos_settlements" db=0.3ms idle=2.1ms SELECT DISTINCT p0.`scheme_name` FROM `pos_settlements` AS p0 [] ↳ SettlementCore.PosSettlementQueries.filter_options/0, at: lib/settlement_core/pos_settlement_queries.ex:63 [2026-07-15 11:37:58.873] [DEBUG] Replied in 4ms [2026-07-15 11:37:58.873] [DEBUG] HANDLE PARAMS in PlatformWeb.PosSettlementLive.Index Parameters: %{} [2026-07-15 11:37:58.873] [DEBUG] Replied in 215µs [2026-07-15 11:38:06.513] [WARN ] navigate event to "http://demo.ctrmv.com:4059/terminals" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-07-15 11:38:06.964] [INFO ] GET /terminals [2026-07-15 11:38:06.964] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-07-15 11:38:06.966] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.1ms idle=1508.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:38:06.965111Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 11:38:06.967] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=987.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-07-15 11:38:06.968] [DEBUG] QUERY OK source="app_packages" db=0.7ms idle=646.1ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-07-15 11:38:06.969] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=1.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-15 11:38:06.970] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms idle=0.6ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [42] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-07-15 11:38:06.971] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:06.975] [INFO ] Sent 200 in 10ms [2026-07-15 11:38:07.849] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 37µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JC4TCh9rJ2YAIQYCWkkJF0E8MzFsAwBRGBEKSYsPkELD89bV0Eyz6sAh", "_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-15 11:38:08.028] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "clVAL2T6kdJFbpkAqyJKZpA9", "live_socket_id" => "users_sessions:a4rVl56xRqXtdskaowrEkA6gNFWW5HlszCod0J-qxl8=", "user_token" => <<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>} [2026-07-15 11:38:08.029] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1571.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 11:38:08.028815Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-07-15 11:38:08.031] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1046.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-15 11:38:08.033] [DEBUG] QUERY OK source="app_packages" db=0.6ms idle=47.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-07-15 11:38:08.034] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-07-15 11:38:08.036] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms idle=1.3ms 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-15 11:38:08.036] [DEBUG] Replied in 7ms [2026-07-15 11:38:08.036] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:08.037] [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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:08.038] [DEBUG] Replied in 1ms [2026-07-15 11:38:15.625] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250424798001"} [2026-07-15 11:38:15.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms queue=0.4ms idle=620.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:15.639] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.8ms idle=315.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43750, 43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:15.639] [DEBUG] Replied in 14ms [2026-07-15 11:38:15.791] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250424798001"} [2026-07-15 11:38:15.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=159.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:15.799] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=158.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43750, 43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:15.799] [DEBUG] Replied in 7ms [2026-07-15 11:38:20.664] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:20.664] [DEBUG] Replied in 186µs [2026-07-15 11:38:20.664] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:20.668] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=651.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:20.668] [DEBUG] Replied in 3ms [2026-07-15 11:38:20.873] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:20.874] [DEBUG] Replied in 214µs [2026-07-15 11:38:20.874] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:20.875] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=552.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:20.876] [DEBUG] Replied in 1ms [2026-07-15 11:38:22.617] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:38:22.617] [INFO ] Incoming JSON payload: {"oid":"fdbfcf0a-bc11-4bc0-8706-81a5daef75e3","sn":"98250623730001","uploadTime":"2026-07-15T02:48:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:48:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:38:22.618] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fdbfcf0a-bc11-4bc0-8706-81a5daef75e3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:48:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:48:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:48:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:48:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:48:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:48:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:48:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:48:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:48:12Z", "vendor" => "morefun"} [2026-07-15 11:38:22.618] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:38:22.619] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:38:22.619] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:38:22.619] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=599.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-15 11:38:22.620] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=297.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-15 11:38:22.620] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:38:22.621] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:38:22.621] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:38:22.655] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:38:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:38:22.655] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:38:22.656] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=34.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:38:22.679] [DEBUG] QUERY OK source="tms_terminals" db=21.9ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:38:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:38:22.691] [DEBUG] QUERY OK db=12.1ms idle=23.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "fdbfcf0a-bc11-4bc0-8706-81a5daef75e3", "2026-07-15T02:48:12Z", ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:38:22.692] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47146, oid: "fdbfcf0a-bc11-4bc0-8706-81a5daef75e3", upload_time: "2026-07-15T02:48:12Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]} [2026-07-15 11:38:22.692] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:48:12Z", "value" => "morefun"} [2026-07-15 11:38:22.709] [DEBUG] QUERY OK db=16.7ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "morefun", "vendor", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405737, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.709] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:48:12Z", "value" => "kiosk_launcher"} [2026-07-15 11:38:22.746] [DEBUG] QUERY OK db=36.0ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "kiosk_launcher", "model", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405738, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.746] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:48:12Z", "value" => "1.0"} [2026-07-15 11:38:22.776] [DEBUG] QUERY OK db=29.4ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "1.0", "app_version", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405739, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.777] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:48:12Z", "value" => "13"} [2026-07-15 11:38:22.790] [DEBUG] QUERY OK db=12.6ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "13", "android_version", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405740, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.790] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "937"} [2026-07-15 11:38:22.803] [DEBUG] QUERY OK db=12.4ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "937", "ram_free_mb", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405741, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.804] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:48:12Z", "value" => "WIFI"} [2026-07-15 11:38:22.822] [DEBUG] QUERY OK db=17.8ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "WIFI", "network_type", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405742, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.822] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:48:12Z", "value" => "true"} [2026-07-15 11:38:22.848] [DEBUG] QUERY OK db=25.0ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "true", "kiosk_active", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405743, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.848] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:48:12Z", "value" => ""} [2026-07-15 11:38:22.870] [DEBUG] QUERY OK db=21.6ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:48:12Z", "sim_operator", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405744, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.871] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"} [2026-07-15 11:38:22.890] [DEBUG] QUERY OK db=19.3ms queue=0.2ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "UNKNOWN", "sim_number", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405745, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.891] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"} [2026-07-15 11:38:22.914] [DEBUG] QUERY OK db=22.3ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "UNKNOWN", "sim_iccid", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405746, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.914] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"} [2026-07-15 11:38:22.950] [DEBUG] QUERY OK db=35.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "UNKNOWN", "sim_imsi", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405747, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.951] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"} [2026-07-15 11:38:22.982] [DEBUG] QUERY OK db=31.0ms queue=0.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "UNKNOWN", "sim_iccid2", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:22.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405748, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:22.983] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:48:12Z", "value" => "UNKNOWN"} [2026-07-15 11:38:23.003] [DEBUG] QUERY OK db=20.4ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "UNKNOWN", "sim_imsi2", 47146, ~N[2026-07-15 11:38:22], ~N[2026-07-15 11:38:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:23.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405749, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:22], updated_at: ~N[2026-07-15 11:38:22]}} [2026-07-15 11:38:23.004] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "13"} [2026-07-15 11:38:23.016] [DEBUG] QUERY OK db=12.0ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "13", "data_usage_mb", 47146, ~N[2026-07-15 11:38:23], ~N[2026-07-15 11:38:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:23.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405750, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:23], updated_at: ~N[2026-07-15 11:38:23]}} [2026-07-15 11:38:23.017] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:48:12Z", "value" => "0"} [2026-07-15 11:38:23.037] [DEBUG] QUERY OK db=19.5ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "0", "mobile_data_mb", 47146, ~N[2026-07-15 11:38:23], ~N[2026-07-15 11:38:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:23.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405751, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:23], updated_at: ~N[2026-07-15 11:38:23]}} [2026-07-15 11:38:23.038] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:48:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:38:23.069] [DEBUG] QUERY OK db=30.6ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:48:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47146, ~N[2026-07-15 11:38:23], ~N[2026-07-15 11:38:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:38:23.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405752, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:48:12Z", message: nil, status_log_id: 47146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:38:23], updated_at: ~N[2026-07-15 11:38:23]}} [2026-07-15 11:38:23.071] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-15 11:38:23.074] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:34:19]}, %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-15 11:38:23.568] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250315780001"} [2026-07-15 11:38:23.569] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=496.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [4] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:23.570] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.5ms idle=43.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:23.571] [DEBUG] Replied in 3ms [2026-07-15 11:38:23.769] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250315780001"} [2026-07-15 11:38:23.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=200.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [4] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:23.772] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.3ms idle=200.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:23.772] [DEBUG] Replied in 3ms [2026-07-15 11:38:24.975] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:24.975] [DEBUG] Replied in 195µs [2026-07-15 11:38:24.975] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:24.979] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=0.8ms idle=1203.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-15 11:38:24.980] [DEBUG] Replied in 4ms [2026-07-15 11:38:25.136] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:25.136] [DEBUG] Replied in 233µs [2026-07-15 11:38:25.136] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:25.137] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=157.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:25.138] [DEBUG] Replied in 2ms [2026-07-15 11:38:25.342] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:25.342] [DEBUG] Replied in 185µs [2026-07-15 11:38:25.342] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-07-15 11:38:25.343] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=315.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-07-15 11:38:25.344] [DEBUG] Replied in 1ms [2026-07-15 11:38:25.616] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250424798001"} [2026-07-15 11:38:25.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.4ms idle=478.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:25.623] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.3ms idle=278.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43750, 43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:25.624] [DEBUG] Replied in 8ms [2026-07-15 11:38:25.807] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "61250424798001"} [2026-07-15 11:38:25.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms idle=185.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:25.815] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.5ms idle=189.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43750, 43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-07-15 11:38:25.815] [DEBUG] Replied in 8ms [2026-07-15 11:38:50.587] [INFO ] Running offline device check... [2026-07-15 11:38:50.587] [INFO ] Starting offline device check... [2026-07-15 11:38:50.589] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=1252.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 11:38:50.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=496.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:38:50.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms queue=0.1ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.606] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.619] [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 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-15 11:38:50.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=13.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:38:50.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.665] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-15 11:38:50.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:38:50.680] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-07-15 11:38:50.680] [INFO ] Offline device check completed successfully [2026-07-15 11:39:31.430] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 11:39:31.430] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T15:39:29Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T15:39:29Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T15:39:29Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T15:39:29Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T15:39:29Z","message":""}]} [2026-07-15 11:39:31.430] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:39:29Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T15:39:29Z"} [2026-07-15 11:39:31.431] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:39:31.432] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=210.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:39:31.432] [INFO ] Terminal updated: 61250424798001 [2026-07-15 11:39:31.457] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=109.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:39:31], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:39:31.458] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:39:31.482] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:39:31], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:39:31.507] [DEBUG] QUERY OK db=24.5ms idle=24.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T15:39:29Z", ~N[2026-07-15 11:39:31], ~N[2026-07-15 11:39:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:39:31.507] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47147, oid: "org-id-placeholder", upload_time: "2026-07-15T15:39:29Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:39:31], updated_at: ~N[2026-07-15 11:39:31]} [2026-07-15 11:39:31.508] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => 29} [2026-07-15 11:39:31.524] [DEBUG] QUERY OK db=15.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:39:29Z", "29", "battery", 47147, ~N[2026-07-15 11:39:31], ~N[2026-07-15 11:39:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:39:31.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405753, itemkey: "battery", value: "29", timestamp: "2026-07-15T15:39:29Z", message: nil, status_log_id: 47147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:39:31], updated_at: ~N[2026-07-15 11:39:31]}} [2026-07-15 11:39:31.525] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:39:29Z", "value" => 50} [2026-07-15 11:39:31.552] [DEBUG] QUERY OK db=26.5ms queue=0.4ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T15:39:29Z", "50", "memory", 47147, ~N[2026-07-15 11:39:31], ~N[2026-07-15 11:39:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:39:31.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405754, itemkey: "memory", value: "50", timestamp: "2026-07-15T15:39:29Z", message: "Normal", status_log_id: 47147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:39:31], updated_at: ~N[2026-07-15 11:39:31]}} [2026-07-15 11:39:31.553] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => 50} [2026-07-15 11:39:31.577] [DEBUG] QUERY OK db=24.1ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:39:29Z", "50", "cpu", 47147, ~N[2026-07-15 11:39:31], ~N[2026-07-15 11:39:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:39:31.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405755, itemkey: "cpu", value: "50", timestamp: "2026-07-15T15:39:29Z", message: nil, status_log_id: 47147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:39:31], updated_at: ~N[2026-07-15 11:39:31]}} [2026-07-15 11:39:31.578] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:39:29Z", "value" => "online"} [2026-07-15 11:39:31.602] [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-15T15:39:29Z", "online", "network", 47147, ~N[2026-07-15 11:39:31], ~N[2026-07-15 11:39:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:39:31.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405756, itemkey: "network", value: "online", timestamp: "2026-07-15T15:39:29Z", message: nil, status_log_id: 47147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:39:31], updated_at: ~N[2026-07-15 11:39:31]}} [2026-07-15 11:39:31.602] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 11:39:31.603] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:39:31.609] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=28.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:39:31.627] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:39:31.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=29.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:39:31.640] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms queue=0.7ms idle=28.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:40:48.944] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:40:48.944] [INFO ] Incoming JSON payload: {"oid":"134fb64e-c552-4f74-9670-fade33befe7e","sn":"98250623730001","uploadTime":"2026-07-15T02:50:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:50:38Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:40:48.945] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "134fb64e-c552-4f74-9670-fade33befe7e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:50:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:50:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:50:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:50:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:50:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:50:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:50:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:50:38Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:50:38Z", "vendor" => "morefun"} [2026-07-15 11:40:48.945] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:40:48.945] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:40:48.945] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:40:48.946] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=615.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-15 11:40:48.946] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=484.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-15 11:40:48.947] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:40:48.949] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:40:48.950] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:40:48.975] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:40:48], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:40:48.975] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:40:48.976] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=26.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:40:48.996] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:40:48], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:40:49.018] [DEBUG] QUERY OK db=22.3ms idle=20.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "134fb64e-c552-4f74-9670-fade33befe7e", "2026-07-15T02:50:38Z", ~N[2026-07-15 11:40:48], ~N[2026-07-15 11:40:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:40:49.019] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47148, oid: "134fb64e-c552-4f74-9670-fade33befe7e", upload_time: "2026-07-15T02:50:38Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:48], updated_at: ~N[2026-07-15 11:40:48]} [2026-07-15 11:40:49.019] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:50:38Z", "value" => "morefun"} [2026-07-15 11:40:49.042] [DEBUG] QUERY OK db=23.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "morefun", "vendor", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405757, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.043] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:50:38Z", "value" => "kiosk_launcher"} [2026-07-15 11:40:49.066] [DEBUG] QUERY OK db=23.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "kiosk_launcher", "model", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405758, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.067] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:50:38Z", "value" => "1.0"} [2026-07-15 11:40:49.092] [DEBUG] QUERY OK db=24.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "1.0", "app_version", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405759, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.093] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:50:38Z", "value" => "13"} [2026-07-15 11:40:49.105] [DEBUG] QUERY OK db=11.4ms queue=0.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "13", "android_version", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405760, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.105] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "937"} [2026-07-15 11:40:49.132] [DEBUG] QUERY OK db=26.2ms queue=0.1ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "937", "ram_free_mb", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405761, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.133] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:50:38Z", "value" => "WIFI"} [2026-07-15 11:40:49.166] [DEBUG] QUERY OK db=32.3ms queue=0.2ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "WIFI", "network_type", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405762, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.166] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:50:38Z", "value" => "true"} [2026-07-15 11:40:49.189] [DEBUG] QUERY OK db=22.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "true", "kiosk_active", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405763, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.190] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:50:38Z", "value" => ""} [2026-07-15 11:40:49.204] [DEBUG] QUERY OK db=13.8ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:50:38Z", "sim_operator", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405764, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.204] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"} [2026-07-15 11:40:49.216] [DEBUG] QUERY OK db=11.0ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "UNKNOWN", "sim_number", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405765, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.216] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"} [2026-07-15 11:40:49.244] [DEBUG] QUERY OK db=27.2ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "UNKNOWN", "sim_iccid", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405766, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.244] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"} [2026-07-15 11:40:49.271] [DEBUG] QUERY OK db=26.6ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "UNKNOWN", "sim_imsi", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405767, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.272] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"} [2026-07-15 11:40:49.295] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "UNKNOWN", "sim_iccid2", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405768, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.296] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:50:38Z", "value" => "UNKNOWN"} [2026-07-15 11:40:49.310] [DEBUG] QUERY OK db=13.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "UNKNOWN", "sim_imsi2", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405769, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.310] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "13"} [2026-07-15 11:40:49.321] [DEBUG] QUERY OK db=10.6ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "13", "data_usage_mb", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405770, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.321] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:50:38Z", "value" => "0"} [2026-07-15 11:40:49.363] [DEBUG] QUERY OK db=41.0ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "0", "mobile_data_mb", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405771, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.363] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:50:38Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:40:49.401] [DEBUG] QUERY OK db=36.6ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:50:38Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47148, ~N[2026-07-15 11:40:49], ~N[2026-07-15 11:40:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:40:49.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405772, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:50:38Z", message: nil, status_log_id: 47148, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:40:49], updated_at: ~N[2026-07-15 11:40:49]}} [2026-07-15 11:40:49.403] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=39.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:40:49.408] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:40:49.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:40:49.415] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:41:25.561] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:41:25.561] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:41:23Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:41:23Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:41:23Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:41:23Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:41:23Z","message":""}]} [2026-07-15 11:41:25.561] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:41:23Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:41:23Z"} [2026-07-15 11:41:25.561] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:41:25.563] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=231.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-15 11:41:25.563] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:41:25.591] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:41:25], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:41:25.592] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=28.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:41:25.624] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:41:25], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:41:25.682] [DEBUG] QUERY OK db=57.4ms queue=0.1ms idle=32.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:41:23Z", ~N[2026-07-15 11:41:25], ~N[2026-07-15 11:41:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:41:25.682] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47149, oid: "org-id-placeholder", upload_time: "2026-07-15T11:41:23Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:41:25], updated_at: ~N[2026-07-15 11:41:25]} [2026-07-15 11:41:25.682] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => 28} [2026-07-15 11:41:25.706] [DEBUG] QUERY OK db=23.7ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:41:23Z", "28", "battery", 47149, ~N[2026-07-15 11:41:25], ~N[2026-07-15 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:41:25.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405773, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:41:23Z", message: nil, status_log_id: 47149, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:41:25], updated_at: ~N[2026-07-15 11:41:25]}} [2026-07-15 11:41:25.707] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:41:23Z", "value" => 50} [2026-07-15 11:41:25.740] [DEBUG] QUERY OK db=32.2ms queue=0.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:41:23Z", "50", "memory", 47149, ~N[2026-07-15 11:41:25], ~N[2026-07-15 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:41:25.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405774, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:41:23Z", message: "Normal", status_log_id: 47149, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:41:25], updated_at: ~N[2026-07-15 11:41:25]}} [2026-07-15 11:41:25.741] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => 50} [2026-07-15 11:41:25.763] [DEBUG] QUERY OK db=21.0ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:41:23Z", "50", "cpu", 47149, ~N[2026-07-15 11:41:25], ~N[2026-07-15 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:41:25.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405775, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:41:23Z", message: nil, status_log_id: 47149, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:41:25], updated_at: ~N[2026-07-15 11:41:25]}} [2026-07-15 11:41:25.763] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:41:23Z", "value" => "online"} [2026-07-15 11:41:25.793] [DEBUG] QUERY OK db=28.3ms queue=0.8ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:41:23Z", "online", "network", 47149, ~N[2026-07-15 11:41:25], ~N[2026-07-15 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:41:25.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405776, itemkey: "network", value: "online", timestamp: "2026-07-15T11:41:23Z", message: nil, status_log_id: 47149, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:41:25], updated_at: ~N[2026-07-15 11:41:25]}} [2026-07-15 11:41:25.793] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:41:25.797] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:41:25.802] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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-15 11:41:25.806] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:41:25.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=1.7ms idle=14.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:41:25.818] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=2.2ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:28.297] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 11:42:28.297] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T19:45:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T19:45:35Z","value":"56"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T19:45:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T19:45:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T19:45:35Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T19:45:35Z","value":"1.0.0"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T19:45:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T19:45:35Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T19:45:35Z","vendor":"MoreFun"} [2026-07-15 11:42:28.297] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:45:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:45:35Z", "value" => "56"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:45:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:45:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:45:35Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:45:35Z", "value" => "1.0.0"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:45:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:45:35Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T19:45:35Z", "vendor" => "MoreFun"} [2026-07-15 11:42:28.298] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.0", keys_config: "", parameter_config: ""} [2026-07-15 11:42:28.298] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 11:42:28.298] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 11:42:28.299] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1352.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 11:42:28.300] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=573.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 11:42:28.309] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=3.0ms idle=6.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:42:28.319] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=2.2ms idle=15.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:42:28.328] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=1.5ms idle=17.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-15 11:42:28.362] [DEBUG] QUERY OK source="pos_merchant" db=0.6ms queue=28.3ms idle=13.9ms 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-15 11:42:28.363] [DEBUG] QUERY OK db=0.7ms queue=0.8ms idle=1028.3ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 11:42:28.364] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 11:42:28.370] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=1.7ms idle=39.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 11:42:28.376] [DEBUG] QUERY OK source="address" db=0.9ms queue=1.5ms idle=11.5ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 11:42:28.376] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 11:42:28.384] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 11:42:28.420] [DEBUG] QUERY OK db=26.3ms queue=1.5ms idle=21.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "299eccb4b395bb189979d3e3b2653feee3919952418b6f00eff4de92fe2284b0", 12322, 913, ~U[2026-07-15 11:42:28Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 11:42:28.420] [INFO ] AutoPushService: Created push log 33569 for MF919 params.zip [2026-07-15 11:42:28.423] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 12322, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 11:42:28.424] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:42:28.428] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 11:42:28.438] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=2.6ms idle=58.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 11:42:28.443] [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-15 11:42:28.469] [DEBUG] QUERY OK db=23.9ms queue=0.5ms idle=24.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b4c2d82fff878f63ff34582edd56bb0ec911f363faf1ec050dba8abe102aee23", 12418, 17947, ~U[2026-07-15 11:42:28Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 11:42:28.469] [INFO ] AutoPushService: Created push log 33570 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 11:42:28.469] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 12418, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 11:42:28.469] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:42:28.469] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 11:42:28.471] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=31.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 11:42:28.475] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 11:42:28.476] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=7.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 11:42:28.476] [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-15 11:42:28.529] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 11:42:28.529] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:42:28.529] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:42:28.531] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=59.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:42:28.531] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:42:28.531] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 11:42:28.532] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=55.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-15 11:42:28.533] [INFO ] Terminal updated: 98251226730001 [2026-07-15 11:42:28.606] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms queue=41.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", nil, "1.0.0", nil, ~N[2026-07-15 11:42:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:42:28.607] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=73.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:42:28.608] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:42:28.608] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:emv_config, "1.0.0", "1.0.1"}, {:application, "1.0.0", "3.8.5"}] [2026-07-15 11:42:28.661] [DEBUG] QUERY OK source="parameter_push_logs" db=51.5ms queue=0.8ms idle=1.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "emv_config", ~N[2026-07-15 11:12:28]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:42:28.661] [INFO ] VersionComplianceChecker: Skipping emv_config re-push for 98251226730001 (push already in-flight or within cooldown) [2026-07-15 11:42:28.681] [DEBUG] QUERY OK source="parameter_push_logs" db=19.0ms idle=53.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:12:28]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:42:28.681] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 11:42:28.681] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 11:42:28.682] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=20.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 11:42:28.683] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:42:28.683] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:42:28.684] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:42:28.754] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms queue=42.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:42:28.794] [DEBUG] QUERY OK db=39.1ms idle=26.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T19:45:35Z", ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:42:28.794] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47150, oid: "organization_id", upload_time: "2026-07-15T19:45:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]} [2026-07-15 11:42:28.794] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:45:35Z", "value" => "online"} [2026-07-15 11:42:28.821] [DEBUG] QUERY OK db=26.2ms queue=0.1ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T19:45:35Z", "online", "status", 47150, ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:28.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405777, itemkey: "status", value: "online", timestamp: "2026-07-15T19:45:35Z", message: "Terminal status update", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]}} [2026-07-15 11:42:28.822] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 11:42:28.823] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=28.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:28], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 11:42:28.824] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:45:35Z", "value" => "56"} [2026-07-15 11:42:28.824] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:42:28.858] [DEBUG] QUERY OK db=34.1ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T19:45:35Z", "56", "battery", 47150, ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:28.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405778, itemkey: "battery", value: "56", timestamp: "2026-07-15T19:45:35Z", message: "Battery level", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]}} [2026-07-15 11:42:28.859] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:45:35Z", "value" => "online"} [2026-07-15 11:42:28.907] [DEBUG] QUERY OK db=47.8ms queue=0.1ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T19:45:35Z", "online", "network", 47150, ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:28.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405779, itemkey: "network", value: "online", timestamp: "2026-07-15T19:45:35Z", message: "Network connectivity", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]}} [2026-07-15 11:42:28.907] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 11:42:28.909] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=49.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:28], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 11:42:28.909] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:45:35Z", "value" => "0"} [2026-07-15 11:42:28.909] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:42:28.934] [DEBUG] QUERY OK db=24.1ms queue=0.8ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T19:45:35Z", "0", "cpu", 47150, ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:28.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405780, itemkey: "cpu", value: "0", timestamp: "2026-07-15T19:45:35Z", message: "CPU usage percentage", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]}} [2026-07-15 11:42:28.935] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:45:35Z", "value" => ""} [2026-07-15 11:42:29.001] [DEBUG] QUERY OK db=22.8ms queue=42.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-07-15T19:45:35Z", "parameter_config", 47150, ~N[2026-07-15 11:42:28], ~N[2026-07-15 11:42:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:29.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405781, itemkey: "parameter_config", value: nil, timestamp: "2026-07-15T19:45:35Z", message: "Current parameters version", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:28], updated_at: ~N[2026-07-15 11:42:28]}} [2026-07-15 11:42:29.001] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:45:35Z", "value" => "1.0.0"} [2026-07-15 11:42:29.033] [DEBUG] QUERY OK db=31.8ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T19:45:35Z", "1.0.0", "emv_config", 47150, ~N[2026-07-15 11:42:29], ~N[2026-07-15 11:42:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:29.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405782, itemkey: "emv_config", value: "1.0.0", timestamp: "2026-07-15T19:45:35Z", message: "Current EMV config version", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:29], updated_at: ~N[2026-07-15 11:42:29]}} [2026-07-15 11:42:29.034] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:45:35Z", "value" => ""} [2026-07-15 11:42:29.055] [DEBUG] QUERY OK db=20.8ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T19:45:35Z", "keys_config", 47150, ~N[2026-07-15 11:42:29], ~N[2026-07-15 11:42:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:29.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405783, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T19:45:35Z", message: "Current keys config version", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:29], updated_at: ~N[2026-07-15 11:42:29]}} [2026-07-15 11:42:29.056] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:45:35Z", "value" => "1.0.0"} [2026-07-15 11:42:29.079] [DEBUG] QUERY OK db=22.2ms queue=0.4ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T19:45:35Z", "1.0.0", "application", 47150, ~N[2026-07-15 11:42:29], ~N[2026-07-15 11:42:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:29.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405784, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T19:45:35Z", message: "Current application version", status_log_id: 47150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:29], updated_at: ~N[2026-07-15 11:42:29]}} [2026-07-15 11:42:29.106] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms idle=24.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-15 11:42:29.108] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:42:29.111] [WARN ] Unexpected async result [2026-07-15 11:42:29.111] [WARN ] Unexpected async result [2026-07-15 11:42:29.113] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:42:29.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:29.119] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:35.035] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:42:35.035] [INFO ] Incoming JSON payload: {"oid":"f32c8979-50c3-4528-8fdb-9a392df55a1f","sn":"98250623730001","uploadTime":"2026-07-15T02:52:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:52:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:42:35.038] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f32c8979-50c3-4528-8fdb-9a392df55a1f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:52:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:52:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:52:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:52:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:52:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:52:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:52:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:52:24Z", "vendor" => "morefun"} [2026-07-15 11:42:35.038] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:42:35.039] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:42:35.039] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:42:35.041] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=706.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-15 11:42:35.041] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=298.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-15 11:42:35.041] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:42:35.043] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:42:35.043] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:42:35.078] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms queue=0.1ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:42:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:42:35.078] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:42:35.081] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=36.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:42:35.105] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:42:35.138] [DEBUG] QUERY OK db=29.8ms queue=2.5ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "f32c8979-50c3-4528-8fdb-9a392df55a1f", "2026-07-15T02:52:24Z", ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:42:35.138] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47151, oid: "f32c8979-50c3-4528-8fdb-9a392df55a1f", upload_time: "2026-07-15T02:52:24Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]} [2026-07-15 11:42:35.138] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:52:24Z", "value" => "morefun"} [2026-07-15 11:42:35.195] [DEBUG] QUERY OK db=12.8ms queue=43.9ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "morefun", "vendor", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405785, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.196] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:52:24Z", "value" => "kiosk_launcher"} [2026-07-15 11:42:35.223] [DEBUG] QUERY OK db=27.0ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "kiosk_launcher", "model", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405786, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.224] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:52:24Z", "value" => "1.0"} [2026-07-15 11:42:35.249] [DEBUG] QUERY OK db=24.8ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "1.0", "app_version", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405787, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.249] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:52:24Z", "value" => "13"} [2026-07-15 11:42:35.279] [DEBUG] QUERY OK db=29.2ms queue=0.2ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "13", "android_version", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405788, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.280] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "938"} [2026-07-15 11:42:35.292] [DEBUG] QUERY OK db=10.5ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "938", "ram_free_mb", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405789, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.293] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:52:24Z", "value" => "WIFI"} [2026-07-15 11:42:35.313] [DEBUG] QUERY OK db=19.8ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "WIFI", "network_type", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405790, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.314] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:52:24Z", "value" => "true"} [2026-07-15 11:42:35.348] [DEBUG] QUERY OK db=33.7ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "true", "kiosk_active", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405791, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.349] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:52:24Z", "value" => ""} [2026-07-15 11:42:35.372] [DEBUG] QUERY OK db=22.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:52:24Z", "sim_operator", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405792, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.372] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"} [2026-07-15 11:42:35.386] [DEBUG] QUERY OK db=13.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "UNKNOWN", "sim_number", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405793, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.386] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"} [2026-07-15 11:42:35.398] [DEBUG] QUERY OK db=10.8ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "UNKNOWN", "sim_iccid", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405794, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.398] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"} [2026-07-15 11:42:35.425] [DEBUG] QUERY OK db=26.4ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "UNKNOWN", "sim_imsi", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405795, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.425] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"} [2026-07-15 11:42:35.455] [DEBUG] QUERY OK db=28.9ms queue=0.2ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "UNKNOWN", "sim_iccid2", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405796, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.455] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:52:24Z", "value" => "UNKNOWN"} [2026-07-15 11:42:35.478] [DEBUG] QUERY OK db=22.6ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "UNKNOWN", "sim_imsi2", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405797, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.479] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "13"} [2026-07-15 11:42:35.490] [DEBUG] QUERY OK db=11.2ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "13", "data_usage_mb", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405798, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.491] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:52:24Z", "value" => "0"} [2026-07-15 11:42:35.509] [DEBUG] QUERY OK db=18.2ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:24Z", "0", "mobile_data_mb", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405799, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.510] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:42:35.537] [DEBUG] QUERY OK db=26.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47151, ~N[2026-07-15 11:42:35], ~N[2026-07-15 11:42:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:35.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405800, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:52:24Z", message: nil, status_log_id: 47151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:35], updated_at: ~N[2026-07-15 11:42:35]}} [2026-07-15 11:42:35.539] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:42:35.542] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:42:35.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:35.548] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.7ms idle=8.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:53.457] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 11:42:53.457] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T19:46:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T19:46:01Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T19:46:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T19:46:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T19:46:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T19:46:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T19:46:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T19:46:01Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T19:46:01Z","vendor":"MoreFun"} [2026-07-15 11:42:53.457] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:46:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:46:01Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:46:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:46:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:46:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T19:46:01Z", "vendor" => "MoreFun"} [2026-07-15 11:42:53.457] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 11:42:53.457] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 11:42:53.458] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 11:42:53.459] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=655.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 11:42:53.460] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=125.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-15 11:42:53.461] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms idle=1.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:42:53.463] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms 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-15 11:42:53.464] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 11:42:53.505] [DEBUG] QUERY OK source="pos_merchant" db=40.9ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-15 11:42:53.506] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1172.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 ["490603880000000"] [2026-07-15 11:42:53.507] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 11:42:53.508] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=43.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 11:42:53.509] [DEBUG] QUERY OK source="address" db=1.0ms idle=3.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 11:42:53.509] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 11:42:53.512] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 11:42:53.547] [DEBUG] QUERY OK db=33.5ms queue=0.3ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "90255ba734a77a84b5f3c438f6d02abf16a24de439a8542e13c6c159511edc82", 14179, 913, ~U[2026-07-15 11:42:53Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 11:42:53.547] [INFO ] AutoPushService: Created push log 33571 for MF919 params.zip [2026-07-15 11:42:53.547] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 14179, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 11:42:53.547] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:42:53.548] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 11:42:53.549] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=38.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 11:42:53.552] [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-15 11:42:53.582] [DEBUG] QUERY OK db=28.4ms queue=0.4ms idle=5.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3d6338da74a826f31f7d4971ef6be7bbdc585294cc3c485fd9c5f133662c1413", 14243, 17947, ~U[2026-07-15 11:42:53Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 11:42:53.582] [INFO ] AutoPushService: Created push log 33572 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 11:42:53.582] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 14243, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 11:42:53.582] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:42:53.583] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 11:42:53.584] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=34.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 11:42:53.584] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 11:42:53.585] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 11:42:53.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-15 11:42:53.589] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 11:42:53.589] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:42:53.589] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:42:53.591] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=4.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:42:53.591] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:42:53.592] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 11:42:53.594] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=7.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:42:53.594] [INFO ] Terminal updated: 98251226730001 [2026-07-15 11:42:53.675] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms queue=40.9ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.0", "1.0.1", "1.0.0", ~N[2026-07-15 11:42:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:42:53.676] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.5ms idle=81.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-15 11:42:53.677] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:42:53.678] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.2ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:42:53.678] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 11:42:53.696] [DEBUG] QUERY OK source="parameter_push_logs" db=17.9ms idle=1.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:12:53]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:42:53.697] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 11:42:53.697] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 11:42:53.698] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 11:42:53.698] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:42:53.699] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:42:53.699] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:42:53.767] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms queue=41.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:42:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:42:53.790] [DEBUG] QUERY OK db=23.2ms idle=67.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T19:46:01Z", ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:42:53.792] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47152, oid: "organization_id", upload_time: "2026-07-15T19:46:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]} [2026-07-15 11:42:53.792] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:46:01Z", "value" => "online"} [2026-07-15 11:42:53.821] [DEBUG] QUERY OK db=28.9ms queue=0.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T19:46:01Z", "online", "status", 47152, ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:53.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405801, itemkey: "status", value: "online", timestamp: "2026-07-15T19:46:01Z", message: "Terminal status update", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]}} [2026-07-15 11:42:53.822] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 11:42:53.822] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:42:53.822] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:46:01Z", "value" => "57"} [2026-07-15 11:42:53.855] [DEBUG] QUERY OK db=32.9ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T19:46:01Z", "57", "battery", 47152, ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:53.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405802, itemkey: "battery", value: "57", timestamp: "2026-07-15T19:46:01Z", message: "Battery level", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]}} [2026-07-15 11:42:53.856] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:46:01Z", "value" => "online"} [2026-07-15 11:42:53.896] [DEBUG] QUERY OK db=40.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T19:46:01Z", "online", "network", 47152, ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:53.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405803, itemkey: "network", value: "online", timestamp: "2026-07-15T19:46:01Z", message: "Network connectivity", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]}} [2026-07-15 11:42:53.897] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 11:42:53.897] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:46:01Z", "value" => "0"} [2026-07-15 11:42:53.897] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:42:53.978] [DEBUG] QUERY OK db=80.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T19:46:01Z", "0", "cpu", 47152, ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:53.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405804, itemkey: "cpu", value: "0", timestamp: "2026-07-15T19:46:01Z", message: "CPU usage percentage", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]}} [2026-07-15 11:42:53.979] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.0"} [2026-07-15 11:42:54.033] [DEBUG] QUERY OK db=53.9ms queue=0.3ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T19:46:01Z", "1.0.0", "parameter_config", 47152, ~N[2026-07-15 11:42:53], ~N[2026-07-15 11:42:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:54.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405805, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T19:46:01Z", message: "Current parameters version", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:53], updated_at: ~N[2026-07-15 11:42:53]}} [2026-07-15 11:42:54.034] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.1"} [2026-07-15 11:42:54.077] [DEBUG] QUERY OK db=43.1ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T19:46:01Z", "1.0.1", "emv_config", 47152, ~N[2026-07-15 11:42:54], ~N[2026-07-15 11:42:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:54.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405806, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T19:46:01Z", message: "Current EMV config version", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:54], updated_at: ~N[2026-07-15 11:42:54]}} [2026-07-15 11:42:54.077] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:46:01Z", "value" => ""} [2026-07-15 11:42:54.126] [DEBUG] QUERY OK db=47.7ms queue=0.4ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T19:46:01Z", "keys_config", 47152, ~N[2026-07-15 11:42:54], ~N[2026-07-15 11:42:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:54.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405807, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T19:46:01Z", message: "Current keys config version", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:54], updated_at: ~N[2026-07-15 11:42:54]}} [2026-07-15 11:42:54.126] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:46:01Z", "value" => "1.0.0"} [2026-07-15 11:42:54.167] [DEBUG] QUERY OK db=39.3ms queue=0.5ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T19:46:01Z", "1.0.0", "application", 47152, ~N[2026-07-15 11:42:54], ~N[2026-07-15 11:42:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:42:54.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405808, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T19:46:01Z", message: "Current application version", status_log_id: 47152, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:42:54], updated_at: ~N[2026-07-15 11:42:54]}} [2026-07-15 11:42:54.167] [WARN ] Unexpected async result [2026-07-15 11:42:54.167] [WARN ] Unexpected async result [2026-07-15 11:42:54.169] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=41.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-15 11:42:54.173] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:42:54.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms queue=0.1ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:42:54.180] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.5ms idle=10.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:43:05.245] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:43:05.245] [INFO ] Incoming JSON payload: {"oid":"a3ab9327-6a65-4460-bbad-8c396c2019e1","sn":"98250623730001","uploadTime":"2026-07-15T02:52:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:52:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:43:05.249] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a3ab9327-6a65-4460-bbad-8c396c2019e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:52:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:52:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:52:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:52:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:52:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:52:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:52:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:52:55Z", "vendor" => "morefun"} [2026-07-15 11:43:05.250] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:43:05.250] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:43:05.250] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:43:05.251] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=913.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-15 11:43:05.252] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=386.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-15 11:43:05.252] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:43:05.253] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:43:05.253] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:43:05.279] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:43:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:43:05.279] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:43:05.280] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:43:05.305] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:43:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:43:05.334] [DEBUG] QUERY OK db=28.3ms idle=24.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "a3ab9327-6a65-4460-bbad-8c396c2019e1", "2026-07-15T02:52:55Z", ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:43:05.334] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47153, oid: "a3ab9327-6a65-4460-bbad-8c396c2019e1", upload_time: "2026-07-15T02:52:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]} [2026-07-15 11:43:05.334] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:52:55Z", "value" => "morefun"} [2026-07-15 11:43:05.390] [DEBUG] QUERY OK db=12.9ms queue=42.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "morefun", "vendor", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405809, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.390] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:52:55Z", "value" => "kiosk_launcher"} [2026-07-15 11:43:05.407] [DEBUG] QUERY OK db=16.2ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "kiosk_launcher", "model", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405810, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.408] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:52:55Z", "value" => "1.0"} [2026-07-15 11:43:05.433] [DEBUG] QUERY OK db=25.2ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "1.0", "app_version", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405811, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.434] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:52:55Z", "value" => "13"} [2026-07-15 11:43:05.462] [DEBUG] QUERY OK db=26.0ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "13", "android_version", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405812, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.465] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "934"} [2026-07-15 11:43:05.491] [DEBUG] QUERY OK db=25.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "934", "ram_free_mb", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405813, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.492] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:52:55Z", "value" => "WIFI"} [2026-07-15 11:43:05.509] [DEBUG] QUERY OK db=16.7ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "WIFI", "network_type", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405814, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.510] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:52:55Z", "value" => "true"} [2026-07-15 11:43:05.532] [DEBUG] QUERY OK db=20.8ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "true", "kiosk_active", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405815, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.533] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:52:55Z", "value" => ""} [2026-07-15 11:43:05.557] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:52:55Z", "sim_operator", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405816, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.558] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"} [2026-07-15 11:43:05.590] [DEBUG] QUERY OK db=28.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "UNKNOWN", "sim_number", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405817, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.593] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"} [2026-07-15 11:43:05.609] [DEBUG] QUERY OK db=12.7ms decode=0.1ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "UNKNOWN", "sim_iccid", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405818, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.610] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"} [2026-07-15 11:43:05.637] [DEBUG] QUERY OK db=21.4ms queue=5.6ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "UNKNOWN", "sim_imsi", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405819, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.639] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"} [2026-07-15 11:43:05.672] [DEBUG] QUERY OK db=30.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "UNKNOWN", "sim_iccid2", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405820, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.673] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:52:55Z", "value" => "UNKNOWN"} [2026-07-15 11:43:05.694] [DEBUG] QUERY OK db=20.9ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "UNKNOWN", "sim_imsi2", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405821, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.694] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "13"} [2026-07-15 11:43:05.708] [DEBUG] QUERY OK db=12.0ms queue=1.0ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "13", "data_usage_mb", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405822, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.711] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:52:55Z", "value" => "0"} [2026-07-15 11:43:05.741] [DEBUG] QUERY OK db=29.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52:55Z", "0", "mobile_data_mb", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405823, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.745] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:43:05.778] [DEBUG] QUERY OK db=29.3ms queue=0.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47153, ~N[2026-07-15 11:43:05], ~N[2026-07-15 11:43:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:05.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405824, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:52:55Z", message: nil, status_log_id: 47153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:05], updated_at: ~N[2026-07-15 11:43:05]}} [2026-07-15 11:43:05.781] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=39.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:43:05.788] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:43:05.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=13.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:43:05.802] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=2.4ms idle=17.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:43:35.255] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:43:35.255] [INFO ] Incoming JSON payload: {"oid":"1e2f8096-0d5d-4f81-8283-cff77ae88a9d","sn":"98250623730001","uploadTime":"2026-07-15T02:53:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:53:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:43:35.259] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1e2f8096-0d5d-4f81-8283-cff77ae88a9d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:53:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:53:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:53:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:53:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:53:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:53:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:53:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:53:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:53:25Z", "vendor" => "morefun"} [2026-07-15 11:43:35.259] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:43:35.259] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:43:35.260] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:43:35.263] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=2.1ms idle=1309.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-15 11:43:35.265] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=310.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-15 11:43:35.265] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:43:35.266] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:43:35.266] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:43:35.288] [DEBUG] QUERY OK source="tms_terminals" db=21.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:43:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:43:35.288] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:43:35.290] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=22.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:43:35.309] [DEBUG] QUERY OK source="tms_terminals" db=18.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:43:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:43:35.333] [DEBUG] QUERY OK db=22.7ms idle=20.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "1e2f8096-0d5d-4f81-8283-cff77ae88a9d", "2026-07-15T02:53:25Z", ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:43:35.333] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47154, oid: "1e2f8096-0d5d-4f81-8283-cff77ae88a9d", upload_time: "2026-07-15T02:53:25Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]} [2026-07-15 11:43:35.333] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:53:25Z", "value" => "morefun"} [2026-07-15 11:43:35.363] [DEBUG] QUERY OK db=29.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "morefun", "vendor", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405825, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.363] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:53:25Z", "value" => "kiosk_launcher"} [2026-07-15 11:43:35.381] [DEBUG] QUERY OK db=17.4ms 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-15T02:53:25Z", "kiosk_launcher", "model", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405826, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.382] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:53:25Z", "value" => "1.0"} [2026-07-15 11:43:35.395] [DEBUG] QUERY OK db=12.8ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "1.0", "app_version", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405827, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.395] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:53:25Z", "value" => "13"} [2026-07-15 11:43:35.415] [DEBUG] QUERY OK db=19.4ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "13", "android_version", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405828, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.416] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "932"} [2026-07-15 11:43:35.444] [DEBUG] QUERY OK db=28.1ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "932", "ram_free_mb", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405829, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.445] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:53:25Z", "value" => "WIFI"} [2026-07-15 11:43:35.477] [DEBUG] QUERY OK db=32.0ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "WIFI", "network_type", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405830, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.477] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:53:25Z", "value" => "true"} [2026-07-15 11:43:35.491] [DEBUG] QUERY OK db=13.7ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "true", "kiosk_active", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405831, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.492] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:53:25Z", "value" => ""} [2026-07-15 11:43:35.510] [DEBUG] QUERY OK db=18.2ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:53:25Z", "sim_operator", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405832, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.511] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"} [2026-07-15 11:43:35.534] [DEBUG] QUERY OK db=22.6ms queue=0.3ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "UNKNOWN", "sim_number", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405833, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.535] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"} [2026-07-15 11:43:35.560] [DEBUG] QUERY OK db=24.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "UNKNOWN", "sim_iccid", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405834, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.561] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"} [2026-07-15 11:43:35.582] [DEBUG] QUERY OK db=20.5ms queue=0.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "UNKNOWN", "sim_imsi", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405835, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.582] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"} [2026-07-15 11:43:35.595] [DEBUG] QUERY OK db=12.9ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "UNKNOWN", "sim_iccid2", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405836, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.596] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:53:25Z", "value" => "UNKNOWN"} [2026-07-15 11:43:35.614] [DEBUG] QUERY OK db=16.6ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "UNKNOWN", "sim_imsi2", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405837, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.614] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "13"} [2026-07-15 11:43:35.638] [DEBUG] QUERY OK db=22.4ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "13", "data_usage_mb", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405838, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.638] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:53:25Z", "value" => "0"} [2026-07-15 11:43:35.663] [DEBUG] QUERY OK db=24.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:25Z", "0", "mobile_data_mb", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405839, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.664] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:53:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:43:35.689] [DEBUG] QUERY OK db=24.7ms 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-15T02:53:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47154, ~N[2026-07-15 11:43:35], ~N[2026-07-15 11:43:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:43:35.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405840, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:53:25Z", message: nil, status_log_id: 47154, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:43:35], updated_at: ~N[2026-07-15 11:43:35]}} [2026-07-15 11:43:35.692] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=28.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:43:35.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:43:35.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:43:35.706] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.8ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:43:50.484] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 11:43:50.486] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=712.0ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 11:43:50.486] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=485.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-07-15 11:43:50.486] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 11:43:50.681] [INFO ] Running offline device check... [2026-07-15 11:43:50.681] [INFO ] Starting offline device check... [2026-07-15 11:43:50.683] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=195.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-15 11:43:50.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms queue=0.1ms idle=198.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:43:50.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.698] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.701] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.707] [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 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-15 11:43:50.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=0.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.719] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.743] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms queue=0.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:43:50], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 11:43:50.743] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 11:43:50.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.746] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=15.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.763] [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-15 11:43:50.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.767] [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-15 11:43:50.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.779] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.780] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.800] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:43:50.802] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 11:43:50.802] [INFO ] Offline device check completed successfully [2026-07-15 11:44:05.357] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:44:05.357] [INFO ] Incoming JSON payload: {"oid":"b0b963f2-afab-4de0-8812-499c4e1a0de2","sn":"98250623730001","uploadTime":"2026-07-15T02:53:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:53:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:44:05.360] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b0b963f2-afab-4de0-8812-499c4e1a0de2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:53:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:53:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:53:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:53:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:53:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:53:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:53:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:53:55Z", "vendor" => "morefun"} [2026-07-15 11:44:05.360] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:44:05.361] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:44:05.361] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:44:05.367] [DEBUG] QUERY OK source="parameter_templates" db=5.7ms idle=1009.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-15 11:44:05.368] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=316.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-15 11:44:05.369] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:44:05.371] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:44:05.371] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:44:05.385] [DEBUG] QUERY OK source="tms_terminals" db=11.8ms queue=0.2ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:44:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:44:05.385] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:44:05.386] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=14.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:44:05.435] [DEBUG] QUERY OK source="tms_terminals" db=48.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:44:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:44:05.474] [DEBUG] QUERY OK db=38.6ms queue=0.1ms idle=49.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b0b963f2-afab-4de0-8812-499c4e1a0de2", "2026-07-15T02:53:55Z", ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:44:05.474] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47155, oid: "b0b963f2-afab-4de0-8812-499c4e1a0de2", upload_time: "2026-07-15T02:53:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]} [2026-07-15 11:44:05.475] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:53:55Z", "value" => "morefun"} [2026-07-15 11:44:05.507] [DEBUG] QUERY OK db=32.0ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "morefun", "vendor", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405841, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.509] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:53:55Z", "value" => "kiosk_launcher"} [2026-07-15 11:44:05.522] [DEBUG] QUERY OK db=12.4ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "kiosk_launcher", "model", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405842, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.523] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:53:55Z", "value" => "1.0"} [2026-07-15 11:44:05.574] [DEBUG] QUERY OK db=48.4ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "1.0", "app_version", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405843, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.574] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:53:55Z", "value" => "13"} [2026-07-15 11:44:05.608] [DEBUG] QUERY OK db=32.5ms queue=0.2ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "13", "android_version", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405844, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.611] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "930"} [2026-07-15 11:44:05.640] [DEBUG] QUERY OK db=28.3ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "930", "ram_free_mb", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405845, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.640] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:53:55Z", "value" => "WIFI"} [2026-07-15 11:44:05.673] [DEBUG] QUERY OK db=31.8ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "WIFI", "network_type", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405846, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.673] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:53:55Z", "value" => "true"} [2026-07-15 11:44:05.695] [DEBUG] QUERY OK db=19.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "true", "kiosk_active", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405847, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.697] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:53:55Z", "value" => ""} [2026-07-15 11:44:05.740] [DEBUG] QUERY OK db=42.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:53:55Z", "sim_operator", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405848, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.741] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"} [2026-07-15 11:44:05.776] [DEBUG] QUERY OK db=35.4ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "UNKNOWN", "sim_number", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405849, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.777] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"} [2026-07-15 11:44:05.823] [DEBUG] QUERY OK db=46.0ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "UNKNOWN", "sim_iccid", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405850, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.825] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"} [2026-07-15 11:44:05.855] [DEBUG] QUERY OK db=30.1ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "UNKNOWN", "sim_imsi", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405851, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.855] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"} [2026-07-15 11:44:05.901] [DEBUG] QUERY OK db=44.8ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "UNKNOWN", "sim_iccid2", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405852, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:53:55Z", "value" => "UNKNOWN"} [2026-07-15 11:44:05.939] [DEBUG] QUERY OK db=33.4ms queue=3.6ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "UNKNOWN", "sim_imsi2", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405853, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.939] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "13"} [2026-07-15 11:44:05.962] [DEBUG] QUERY OK db=22.8ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "13", "data_usage_mb", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:05.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405854, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:05.963] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:53:55Z", "value" => "0"} [2026-07-15 11:44:06.004] [DEBUG] QUERY OK db=40.2ms queue=0.2ms idle=1.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53:55Z", "0", "mobile_data_mb", 47155, ~N[2026-07-15 11:44:05], ~N[2026-07-15 11:44:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:06.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405855, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:05], updated_at: ~N[2026-07-15 11:44:05]}} [2026-07-15 11:44:06.005] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:44:06.033] [DEBUG] QUERY OK db=26.7ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47155, ~N[2026-07-15 11:44:06], ~N[2026-07-15 11:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:06.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405856, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:53:55Z", message: nil, status_log_id: 47155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:06], updated_at: ~N[2026-07-15 11:44:06]}} [2026-07-15 11:44:06.036] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:44:06.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:44:06.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms queue=0.1ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:44:06.063] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.8ms queue=0.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:44:10.424] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 11:44:10.424] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T19:47:18Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T19:47:18Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T19:47:18Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T19:47:18Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T19:47:18Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T19:47:18Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T19:47:18Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T19:47:18Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T19:47:18Z","vendor":"MoreFun"} [2026-07-15 11:44:10.424] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:47:18Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:47:18Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:47:18Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:47:18Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:47:18Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T19:47:18Z", "vendor" => "MoreFun"} [2026-07-15 11:44:10.425] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 11:44:10.425] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 11:44:10.425] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 11:44:10.427] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1075.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 11:44:10.429] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=361.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-15 11:44:10.430] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=2.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:44:10.432] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.4ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:44:10.432] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms 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-15 11:44:10.473] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=0.9ms 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-15 11:44:10.474] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=1131.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 ["490603880000000"] [2026-07-15 11:44:10.474] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 11:44:10.475] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 11:44:10.475] [DEBUG] QUERY OK source="address" db=0.4ms idle=2.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 11:44:10.476] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 11:44:10.477] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 11:44:10.502] [DEBUG] QUERY OK db=23.7ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8415e3a9b939f83dd03e465ce3dc68d5d7f8c4e052865654890697cff77c0957", 14403, 913, ~U[2026-07-15 11:44:10Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 11:44:10.502] [INFO ] AutoPushService: Created push log 33573 for MF919 params.zip [2026-07-15 11:44:10.502] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 14403, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 11:44:10.502] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:44:10.503] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 11:44:10.505] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.3ms idle=27.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 11:44:10.510] [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-15 11:44:10.556] [DEBUG] QUERY OK db=44.9ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ee42b745599acc8f58c4d79a2acdf36339ff685b21bbc71d0208f62622940335", 12706, 17947, ~U[2026-07-15 11:44:10Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 11:44:10.556] [INFO ] AutoPushService: Created push log 33574 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 11:44:10.556] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 12706, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 11:44:10.556] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:44:10.557] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 11:44:10.558] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=52.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-15 11:44:10.558] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 11:44:10.559] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 11:44:10.560] [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-15 11:44:10.563] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 11:44:10.563] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:44:10.564] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:44:10.565] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=6.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:44:10.565] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:44:10.565] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 11:44:10.566] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:44:10.566] [INFO ] Terminal updated: 98251226730001 [2026-07-15 11:44:10.610] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:44:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:44:10.610] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=43.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 11:44:10.611] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:44:10.612] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:44:10.612] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 11:44:10.643] [DEBUG] QUERY OK source="parameter_push_logs" db=30.1ms idle=1.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:14:10]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:44:10.643] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 11:44:10.643] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 11:44:10.644] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=31.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 11:44:10.645] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:44:10.646] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:44:10.647] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:44:10.661] [DEBUG] QUERY OK source="tms_terminals" db=14.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:44:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:44:10.695] [DEBUG] QUERY OK db=33.3ms idle=14.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T19:47:18Z", ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:44:10.695] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47156, oid: "organization_id", upload_time: "2026-07-15T19:47:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]} [2026-07-15 11:44:10.696] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:47:18Z", "value" => "online"} [2026-07-15 11:44:10.718] [DEBUG] QUERY OK db=22.2ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T19:47:18Z", "online", "status", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405857, itemkey: "status", value: "online", timestamp: "2026-07-15T19:47:18Z", message: "Terminal status update", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.719] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 11:44:10.719] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:47:18Z", "value" => "57"} [2026-07-15 11:44:10.719] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:44:10.742] [DEBUG] QUERY OK db=23.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T19:47:18Z", "57", "battery", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405858, itemkey: "battery", value: "57", timestamp: "2026-07-15T19:47:18Z", message: "Battery level", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.743] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:47:18Z", "value" => "online"} [2026-07-15 11:44:10.766] [DEBUG] QUERY OK db=22.4ms queue=0.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T19:47:18Z", "online", "network", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405859, itemkey: "network", value: "online", timestamp: "2026-07-15T19:47:18Z", message: "Network connectivity", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.767] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 11:44:10.767] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:47:18Z", "value" => "0"} [2026-07-15 11:44:10.767] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:44:10.808] [DEBUG] QUERY OK db=40.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T19:47:18Z", "0", "cpu", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405860, itemkey: "cpu", value: "0", timestamp: "2026-07-15T19:47:18Z", message: "CPU usage percentage", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.808] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.0"} [2026-07-15 11:44:10.832] [DEBUG] QUERY OK db=21.7ms queue=0.1ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T19:47:18Z", "1.0.0", "parameter_config", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405861, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T19:47:18Z", message: "Current parameters version", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.832] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.1"} [2026-07-15 11:44:10.852] [DEBUG] QUERY OK db=19.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T19:47:18Z", "1.0.1", "emv_config", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405862, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T19:47:18Z", message: "Current EMV config version", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.852] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:47:18Z", "value" => ""} [2026-07-15 11:44:10.918] [DEBUG] QUERY OK db=24.3ms queue=41.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T19:47:18Z", "keys_config", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405863, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T19:47:18Z", message: "Current keys config version", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.918] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:47:18Z", "value" => "1.0.0"} [2026-07-15 11:44:10.959] [DEBUG] QUERY OK db=39.6ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T19:47:18Z", "1.0.0", "application", 47156, ~N[2026-07-15 11:44:10], ~N[2026-07-15 11:44:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:10.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405864, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T19:47:18Z", message: "Current application version", status_log_id: 47156, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:10], updated_at: ~N[2026-07-15 11:44:10]}} [2026-07-15 11:44:10.959] [WARN ] Unexpected async result [2026-07-15 11:44:10.960] [WARN ] Unexpected async result [2026-07-15 11:44:10.961] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=41.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:44:10.968] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:44:10.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.6ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:44:10.987] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.8ms queue=1.3ms idle=23.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:44:35.556] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:44:35.556] [INFO ] Incoming JSON payload: {"oid":"fc9b0d6b-7eb6-479a-9ff2-930d8646a77f","sn":"98250623730001","uploadTime":"2026-07-15T02:54:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:54:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:44:35.558] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fc9b0d6b-7eb6-479a-9ff2-930d8646a77f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:54:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:54:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:54:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:54:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:54:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:54:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:54:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:54:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:54:25Z", "vendor" => "morefun"} [2026-07-15 11:44:35.558] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:44:35.558] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:44:35.558] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:44:35.559] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=426.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-15 11:44:35.559] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=207.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-15 11:44:35.559] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:44:35.561] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:44:35.561] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:44:35.586] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:44:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:44:35.587] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:44:35.589] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=25.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:44:35.621] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:44:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:44:35.648] [DEBUG] QUERY OK db=26.2ms idle=33.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "fc9b0d6b-7eb6-479a-9ff2-930d8646a77f", "2026-07-15T02:54:25Z", ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:44:35.648] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47157, oid: "fc9b0d6b-7eb6-479a-9ff2-930d8646a77f", upload_time: "2026-07-15T02:54:25Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]} [2026-07-15 11:44:35.648] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:54:25Z", "value" => "morefun"} [2026-07-15 11:44:35.722] [DEBUG] QUERY OK db=30.1ms queue=42.6ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "morefun", "vendor", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405865, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.722] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:54:25Z", "value" => "kiosk_launcher"} [2026-07-15 11:44:35.760] [DEBUG] QUERY OK db=37.9ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "kiosk_launcher", "model", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405866, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.761] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:54:25Z", "value" => "1.0"} [2026-07-15 11:44:35.774] [DEBUG] QUERY OK db=12.5ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "1.0", "app_version", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405867, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.775] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:54:25Z", "value" => "13"} [2026-07-15 11:44:35.799] [DEBUG] QUERY OK db=23.4ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "13", "android_version", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405868, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.799] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "930"} [2026-07-15 11:44:35.833] [DEBUG] QUERY OK db=33.5ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "930", "ram_free_mb", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405869, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.833] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:54:25Z", "value" => "WIFI"} [2026-07-15 11:44:35.864] [DEBUG] QUERY OK db=30.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "WIFI", "network_type", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405870, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.864] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:54:25Z", "value" => "true"} [2026-07-15 11:44:35.887] [DEBUG] QUERY OK db=22.8ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "true", "kiosk_active", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405871, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.888] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:54:25Z", "value" => ""} [2026-07-15 11:44:35.911] [DEBUG] QUERY OK db=22.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:54:25Z", "sim_operator", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405872, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.912] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"} [2026-07-15 11:44:35.937] [DEBUG] QUERY OK db=24.5ms 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-15T02:54:25Z", "UNKNOWN", "sim_number", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405873, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.937] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"} [2026-07-15 11:44:35.970] [DEBUG] QUERY OK db=32.9ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "UNKNOWN", "sim_iccid", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405874, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.971] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"} [2026-07-15 11:44:35.999] [DEBUG] QUERY OK db=27.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "UNKNOWN", "sim_imsi", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:35.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405875, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:35.999] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"} [2026-07-15 11:44:36.027] [DEBUG] QUERY OK db=27.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-15T02:54:25Z", "UNKNOWN", "sim_iccid2", 47157, ~N[2026-07-15 11:44:35], ~N[2026-07-15 11:44:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:36.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405876, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:35], updated_at: ~N[2026-07-15 11:44:35]}} [2026-07-15 11:44:36.028] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:54:25Z", "value" => "UNKNOWN"} [2026-07-15 11:44:36.051] [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-15T02:54:25Z", "UNKNOWN", "sim_imsi2", 47157, ~N[2026-07-15 11:44:36], ~N[2026-07-15 11:44:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:36.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405877, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:36], updated_at: ~N[2026-07-15 11:44:36]}} [2026-07-15 11:44:36.052] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "13"} [2026-07-15 11:44:36.081] [DEBUG] QUERY OK db=29.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "13", "data_usage_mb", 47157, ~N[2026-07-15 11:44:36], ~N[2026-07-15 11:44:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:36.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405878, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:36], updated_at: ~N[2026-07-15 11:44:36]}} [2026-07-15 11:44:36.082] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:54:25Z", "value" => "0"} [2026-07-15 11:44:36.121] [DEBUG] QUERY OK db=39.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "0", "mobile_data_mb", 47157, ~N[2026-07-15 11:44:36], ~N[2026-07-15 11:44:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:36.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405879, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:36], updated_at: ~N[2026-07-15 11:44:36]}} [2026-07-15 11:44:36.122] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:54:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:44:36.159] [DEBUG] QUERY OK db=35.8ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47157, ~N[2026-07-15 11:44:36], ~N[2026-07-15 11:44:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:44:36.160] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405880, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:54:25Z", message: nil, status_log_id: 47157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:44:36], updated_at: ~N[2026-07-15 11:44:36]}} [2026-07-15 11:44:36.161] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:44:36.166] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:44:36.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:44:36.173] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.4ms idle=10.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:45:05.562] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:45:05.562] [INFO ] Incoming JSON payload: {"oid":"4c71d033-a618-4d26-90a0-ecc1b3797a6f","sn":"98250623730001","uploadTime":"2026-07-15T02:54:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:54:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:54: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:45:05.563] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4c71d033-a618-4d26-90a0-ecc1b3797a6f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:54:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:54:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:54:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:54:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:54:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:54:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:54:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:54: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:54:55Z", "vendor" => "morefun"} [2026-07-15 11:45:05.564] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:45:05.564] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:45:05.564] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:45:05.567] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=1212.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-15 11:45:05.568] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=346.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-15 11:45:05.568] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:45:05.569] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:45:05.570] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:45:05.615] [DEBUG] QUERY OK source="tms_terminals" db=43.4ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:45:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:45:05.615] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:45:05.616] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:45:05.657] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:45:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:45:05.687] [DEBUG] QUERY OK db=29.1ms idle=41.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "4c71d033-a618-4d26-90a0-ecc1b3797a6f", "2026-07-15T02:54:55Z", ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:45:05.687] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47158, oid: "4c71d033-a618-4d26-90a0-ecc1b3797a6f", upload_time: "2026-07-15T02:54:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]} [2026-07-15 11:45:05.687] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:54:55Z", "value" => "morefun"} [2026-07-15 11:45:05.710] [DEBUG] QUERY OK db=23.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "morefun", "vendor", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405881, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.711] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:54:55Z", "value" => "kiosk_launcher"} [2026-07-15 11:45:05.743] [DEBUG] QUERY OK db=32.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "kiosk_launcher", "model", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405882, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.744] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:54:55Z", "value" => "1.0"} [2026-07-15 11:45:05.776] [DEBUG] QUERY OK db=30.7ms queue=1.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "1.0", "app_version", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405883, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.777] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:54:55Z", "value" => "13"} [2026-07-15 11:45:05.800] [DEBUG] QUERY OK db=23.0ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "13", "android_version", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405884, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.800] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "930"} [2026-07-15 11:45:05.832] [DEBUG] QUERY OK db=30.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "930", "ram_free_mb", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405885, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.833] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:54:55Z", "value" => "WIFI"} [2026-07-15 11:45:05.866] [DEBUG] QUERY OK db=32.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "WIFI", "network_type", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405886, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.868] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:54:55Z", "value" => "true"} [2026-07-15 11:45:05.893] [DEBUG] QUERY OK db=24.8ms queue=0.2ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "true", "kiosk_active", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405887, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.893] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:54:55Z", "value" => ""} [2026-07-15 11:45:05.939] [DEBUG] QUERY OK db=45.5ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:54:55Z", "sim_operator", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405888, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.940] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"} [2026-07-15 11:45:05.973] [DEBUG] QUERY OK db=32.2ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "UNKNOWN", "sim_number", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405889, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.974] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"} [2026-07-15 11:45:05.996] [DEBUG] QUERY OK db=21.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "UNKNOWN", "sim_iccid", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:05.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405890, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:05.996] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"} [2026-07-15 11:45:06.052] [DEBUG] QUERY OK db=55.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "UNKNOWN", "sim_imsi", 47158, ~N[2026-07-15 11:45:05], ~N[2026-07-15 11:45:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405891, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:05], updated_at: ~N[2026-07-15 11:45:05]}} [2026-07-15 11:45:06.053] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"} [2026-07-15 11:45:06.082] [DEBUG] QUERY OK db=29.0ms queue=0.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "UNKNOWN", "sim_iccid2", 47158, ~N[2026-07-15 11:45:06], ~N[2026-07-15 11:45:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405892, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:06], updated_at: ~N[2026-07-15 11:45:06]}} [2026-07-15 11:45:06.084] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:54:55Z", "value" => "UNKNOWN"} [2026-07-15 11:45:06.127] [DEBUG] QUERY OK db=43.0ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "UNKNOWN", "sim_imsi2", 47158, ~N[2026-07-15 11:45:06], ~N[2026-07-15 11:45:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405893, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:06], updated_at: ~N[2026-07-15 11:45:06]}} [2026-07-15 11:45:06.128] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "13"} [2026-07-15 11:45:06.151] [DEBUG] QUERY OK db=23.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "13", "data_usage_mb", 47158, ~N[2026-07-15 11:45:06], ~N[2026-07-15 11:45:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405894, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:06], updated_at: ~N[2026-07-15 11:45:06]}} [2026-07-15 11:45:06.152] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:54:55Z", "value" => "0"} [2026-07-15 11:45:06.205] [DEBUG] QUERY OK db=52.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54:55Z", "0", "mobile_data_mb", 47158, ~N[2026-07-15 11:45:06], ~N[2026-07-15 11:45:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405895, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:06], updated_at: ~N[2026-07-15 11:45:06]}} [2026-07-15 11:45:06.206] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:54: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:45:06.243] [DEBUG] QUERY OK db=35.7ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:54: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47158, ~N[2026-07-15 11:45:06], ~N[2026-07-15 11:45:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:06.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405896, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:54:55Z", message: nil, status_log_id: 47158, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:06], updated_at: ~N[2026-07-15 11:45:06]}} [2026-07-15 11:45:06.248] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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-15 11:45:06.258] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:45:06.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms queue=0.1ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:45:06.271] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.7ms idle=22.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:45:35.563] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:45:35.564] [INFO ] Incoming JSON payload: {"oid":"b7f511dd-a498-4dac-85da-a16c6d40fd91","sn":"98250623730001","uploadTime":"2026-07-15T02:55:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:55:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:45:35.565] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b7f511dd-a498-4dac-85da-a16c6d40fd91", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:55:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:55:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:55:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:55:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:55:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:55:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:55:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:55:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:55:25Z", "vendor" => "morefun"} [2026-07-15 11:45:35.565] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:45:35.565] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:45:35.565] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:45:35.567] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=1212.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-15 11:45:35.568] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=275.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-15 11:45:35.568] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:45:35.570] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.5ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:45:35.571] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:45:35.605] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:45:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:45:35.605] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:45:35.607] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=35.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:45:35.636] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:45:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:45:35.668] [DEBUG] QUERY OK db=31.9ms idle=29.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b7f511dd-a498-4dac-85da-a16c6d40fd91", "2026-07-15T02:55:25Z", ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:45:35.668] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47159, oid: "b7f511dd-a498-4dac-85da-a16c6d40fd91", upload_time: "2026-07-15T02:55:25Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]} [2026-07-15 11:45:35.669] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:55:25Z", "value" => "morefun"} [2026-07-15 11:45:35.696] [DEBUG] QUERY OK db=27.4ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "morefun", "vendor", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405897, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.697] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:55:25Z", "value" => "kiosk_launcher"} [2026-07-15 11:45:35.774] [DEBUG] QUERY OK db=76.3ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "kiosk_launcher", "model", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405898, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.774] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:55:25Z", "value" => "1.0"} [2026-07-15 11:45:35.827] [DEBUG] QUERY OK db=52.3ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "1.0", "app_version", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405899, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.827] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:55:25Z", "value" => "13"} [2026-07-15 11:45:35.860] [DEBUG] QUERY OK db=32.8ms queue=0.1ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "13", "android_version", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405900, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.861] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "933"} [2026-07-15 11:45:35.886] [DEBUG] QUERY OK db=24.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "933", "ram_free_mb", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405901, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.886] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:55:25Z", "value" => "WIFI"} [2026-07-15 11:45:35.933] [DEBUG] QUERY OK db=46.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "WIFI", "network_type", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405902, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.933] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:55:25Z", "value" => "true"} [2026-07-15 11:45:35.956] [DEBUG] QUERY OK db=22.8ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "true", "kiosk_active", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405903, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.957] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:55:25Z", "value" => ""} [2026-07-15 11:45:35.971] [DEBUG] QUERY OK db=13.5ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:55:25Z", "sim_operator", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:35.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405904, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:35.971] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"} [2026-07-15 11:45:36.013] [DEBUG] QUERY OK db=41.0ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "UNKNOWN", "sim_number", 47159, ~N[2026-07-15 11:45:35], ~N[2026-07-15 11:45:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405905, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:35], updated_at: ~N[2026-07-15 11:45:35]}} [2026-07-15 11:45:36.013] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"} [2026-07-15 11:45:36.038] [DEBUG] QUERY OK db=23.4ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "UNKNOWN", "sim_iccid", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405906, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.038] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"} [2026-07-15 11:45:36.065] [DEBUG] QUERY OK db=26.5ms queue=0.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "UNKNOWN", "sim_imsi", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405907, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.066] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"} [2026-07-15 11:45:36.112] [DEBUG] QUERY OK db=46.0ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "UNKNOWN", "sim_iccid2", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405908, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.112] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:55:25Z", "value" => "UNKNOWN"} [2026-07-15 11:45:36.135] [DEBUG] QUERY OK db=22.2ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "UNKNOWN", "sim_imsi2", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405909, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.135] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "13"} [2026-07-15 11:45:36.159] [DEBUG] QUERY OK db=23.5ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "13", "data_usage_mb", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405910, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.159] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:55:25Z", "value" => "0"} [2026-07-15 11:45:36.207] [DEBUG] QUERY OK db=47.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "0", "mobile_data_mb", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405911, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.208] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:55:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:45:36.237] [DEBUG] QUERY OK db=27.6ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:55:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47159, ~N[2026-07-15 11:45:36], ~N[2026-07-15 11:45:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:45:36.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405912, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:55:25Z", message: nil, status_log_id: 47159, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:45:36], updated_at: ~N[2026-07-15 11:45:36]}} [2026-07-15 11:45:36.239] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=31.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:45:36.244] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:45:36.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.1ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:45:36.250] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:46:34.242] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:46:34.242] [INFO ] Incoming JSON payload: {"oid":"011ca58b-0742-455f-aff8-33ce36f3a122","sn":"98250623730001","uploadTime":"2026-07-15T02:56:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:56:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:56: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:46:34.244] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "011ca58b-0742-455f-aff8-33ce36f3a122", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:56:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:56:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:56:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:56:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:56:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:56:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:56:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:56: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:56:24Z", "vendor" => "morefun"} [2026-07-15 11:46:34.244] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:46:34.244] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:46:34.245] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:46:34.246] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=1798.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-15 11:46:34.246] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=797.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-15 11:46:34.246] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:46:34.248] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:46:34.248] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:46:34.265] [DEBUG] QUERY OK source="tms_terminals" db=16.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:46:34], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:46:34.265] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:46:34.266] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=17.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:46:34.285] [DEBUG] QUERY OK source="tms_terminals" db=18.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:46:34], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:46:34.305] [DEBUG] QUERY OK db=18.8ms idle=19.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "011ca58b-0742-455f-aff8-33ce36f3a122", "2026-07-15T02:56:24Z", ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:46:34.305] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47160, oid: "011ca58b-0742-455f-aff8-33ce36f3a122", upload_time: "2026-07-15T02:56:24Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]} [2026-07-15 11:46:34.305] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:56:24Z", "value" => "morefun"} [2026-07-15 11:46:34.354] [DEBUG] QUERY OK db=48.5ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "morefun", "vendor", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405913, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.355] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:56:24Z", "value" => "kiosk_launcher"} [2026-07-15 11:46:34.405] [DEBUG] QUERY OK db=49.5ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "kiosk_launcher", "model", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405914, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.405] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:56:24Z", "value" => "1.0"} [2026-07-15 11:46:34.441] [DEBUG] QUERY OK db=35.1ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "1.0", "app_version", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405915, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.441] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:56:24Z", "value" => "13"} [2026-07-15 11:46:34.464] [DEBUG] QUERY OK db=22.9ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "13", "android_version", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405916, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.465] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "937"} [2026-07-15 11:46:34.496] [DEBUG] QUERY OK db=30.8ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "937", "ram_free_mb", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405917, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.496] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:56:24Z", "value" => "WIFI"} [2026-07-15 11:46:34.526] [DEBUG] QUERY OK db=29.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "WIFI", "network_type", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405918, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.526] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:56:24Z", "value" => "true"} [2026-07-15 11:46:34.563] [DEBUG] QUERY OK db=36.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "true", "kiosk_active", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405919, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.563] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:56:24Z", "value" => ""} [2026-07-15 11:46:34.602] [DEBUG] QUERY OK db=37.7ms queue=0.5ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:56:24Z", "sim_operator", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405920, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.602] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"} [2026-07-15 11:46:34.624] [DEBUG] QUERY OK db=21.0ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "UNKNOWN", "sim_number", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405921, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.624] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"} [2026-07-15 11:46:34.646] [DEBUG] QUERY OK db=21.0ms queue=0.1ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "UNKNOWN", "sim_iccid", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405922, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.646] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"} [2026-07-15 11:46:34.678] [DEBUG] QUERY OK db=31.2ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "UNKNOWN", "sim_imsi", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405923, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.679] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"} [2026-07-15 11:46:34.704] [DEBUG] QUERY OK db=23.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "UNKNOWN", "sim_iccid2", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405924, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.705] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:56:24Z", "value" => "UNKNOWN"} [2026-07-15 11:46:34.741] [DEBUG] QUERY OK db=35.7ms 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-15T02:56:24Z", "UNKNOWN", "sim_imsi2", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405925, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.742] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "13"} [2026-07-15 11:46:34.773] [DEBUG] QUERY OK db=30.8ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "13", "data_usage_mb", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405926, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.774] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:56:24Z", "value" => "0"} [2026-07-15 11:46:34.801] [DEBUG] QUERY OK db=26.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56:24Z", "0", "mobile_data_mb", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405927, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.802] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:56: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:46:34.842] [DEBUG] QUERY OK db=38.6ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:56: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47160, ~N[2026-07-15 11:46:34], ~N[2026-07-15 11:46:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:34.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405928, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:56:24Z", message: nil, status_log_id: 47160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:34], updated_at: ~N[2026-07-15 11:46:34]}} [2026-07-15 11:46:34.845] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=42.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-15 11:46:34.852] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:46:34.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=11.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:46:34.860] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.6ms idle=12.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:46:38.447] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:46:38.447] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:46:36Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:46:36Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:46:36Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:46:36Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:46:36Z","message":""}]} [2026-07-15 11:46:38.447] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:46:36Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:46:36Z"} [2026-07-15 11:46:38.447] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:46:38.448] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=990.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-15 11:46:38.449] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:46:38.482] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=91.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:46:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:46:38.483] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=23.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:46:38.520] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:46:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:46:38.533] [DEBUG] QUERY OK db=13.0ms idle=36.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:46:36Z", ~N[2026-07-15 11:46:38], ~N[2026-07-15 11:46:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:46:38.533] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47161, oid: "org-id-placeholder", upload_time: "2026-07-15T11:46:36Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:38], updated_at: ~N[2026-07-15 11:46:38]} [2026-07-15 11:46:38.533] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => 28} [2026-07-15 11:46:38.567] [DEBUG] QUERY OK db=33.3ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:46:36Z", "28", "battery", 47161, ~N[2026-07-15 11:46:38], ~N[2026-07-15 11:46:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:38.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405929, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:46:36Z", message: nil, status_log_id: 47161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:38], updated_at: ~N[2026-07-15 11:46:38]}} [2026-07-15 11:46:38.567] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:46:36Z", "value" => 50} [2026-07-15 11:46:38.599] [DEBUG] QUERY OK db=31.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:46:36Z", "50", "memory", 47161, ~N[2026-07-15 11:46:38], ~N[2026-07-15 11:46:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:38.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405930, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:46:36Z", message: "Normal", status_log_id: 47161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:38], updated_at: ~N[2026-07-15 11:46:38]}} [2026-07-15 11:46:38.600] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => 50} [2026-07-15 11:46:38.624] [DEBUG] QUERY OK db=23.7ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:46:36Z", "50", "cpu", 47161, ~N[2026-07-15 11:46:38], ~N[2026-07-15 11:46:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:38.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405931, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:46:36Z", message: nil, status_log_id: 47161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:38], updated_at: ~N[2026-07-15 11:46:38]}} [2026-07-15 11:46:38.624] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:46:36Z", "value" => "online"} [2026-07-15 11:46:38.664] [DEBUG] QUERY OK db=39.3ms queue=0.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:46:36Z", "online", "network", 47161, ~N[2026-07-15 11:46:38], ~N[2026-07-15 11:46:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:46:38.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405932, itemkey: "network", value: "online", timestamp: "2026-07-15T11:46:36Z", message: nil, status_log_id: 47161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:46:38], updated_at: ~N[2026-07-15 11:46:38]}} [2026-07-15 11:46:38.665] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:46:38.666] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:46:38.669] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=43.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-15 11:46:38.674] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:46:38.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=10.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:46:38.681] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.6ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:48:44.861] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 11:48:44.861] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T19:51:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T19:51:52Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T19:51:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T19:51:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T19:51:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T19:51:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T19:51:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T19:51:52Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T19:51:52Z","vendor":"MoreFun"} [2026-07-15 11:48:44.861] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:51:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:51:52Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:51:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:51:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:51:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T19:51:52Z", "vendor" => "MoreFun"} [2026-07-15 11:48:44.861] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 11:48:44.861] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 11:48:44.862] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 11:48:44.863] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=498.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 11:48:44.865] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=20.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 11:48:44.866] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=2.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:48:44.868] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.7ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:48:44.871] [DEBUG] QUERY OK source="pos_terminal" db=1.9ms idle=2.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 11:48:44.909] [DEBUG] QUERY OK source="pos_merchant" db=38.2ms idle=2.7ms 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-15 11:48:44.911] [DEBUG] QUERY OK db=0.7ms queue=0.8ms idle=551.3ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 11:48:44.911] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 11:48:44.912] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=40.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 11:48:44.914] [DEBUG] QUERY OK source="address" db=1.0ms idle=2.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 11:48:44.914] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 11:48:44.916] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 11:48:44.938] [DEBUG] QUERY OK db=20.9ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c96b9ee7c1d692db89f930504bc1198366aac3432dae2036261faee86289e91e", 3076, 913, ~U[2026-07-15 11:48:44Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 11:48:44], ~N[2026-07-15 11:48:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 11:48:44.939] [INFO ] AutoPushService: Created push log 33575 for MF919 params.zip [2026-07-15 11:48:44.939] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 3076, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 11:48:44.939] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:48:44.940] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 11:48:44.944] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=3.2ms idle=26.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 11:48:44.949] [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-15 11:48:44.985] [DEBUG] QUERY OK db=33.6ms idle=13.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "16cec847842154d2c8899b561bb1670f85004b3582620415caa05a60c9de4a4a", 14819, 17947, ~U[2026-07-15 11:48:44Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 11:48:44], ~N[2026-07-15 11:48:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 11:48:44.985] [INFO ] AutoPushService: Created push log 33576 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 11:48:44.986] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 14819, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 11:48:44.986] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:48:44.986] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 11:48:44.988] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=42.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 11:48:44.988] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 11:48:44.988] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 11:48:44.988] [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-15 11:48:44.990] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 11:48:44.990] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:48:44.991] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:48:44.993] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:48:44.994] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:48:44.994] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 11:48:44.995] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:48:44.995] [INFO ] Terminal updated: 98251226730001 [2026-07-15 11:48:45.017] [DEBUG] QUERY OK source="tms_terminals" db=20.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:48:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:48:45.018] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=22.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 11:48:45.019] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:48:45.019] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=0.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:48:45.019] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 11:48:45.038] [DEBUG] QUERY OK source="parameter_push_logs" db=18.5ms idle=0.9ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:18:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:48:45.038] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 11:48:45.038] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 11:48:45.039] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 11:48:45.040] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:48:45.040] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:48:45.041] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:48:45.065] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:48:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:48:45.084] [DEBUG] QUERY OK db=18.0ms idle=24.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T19:51:52Z", ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:48:45.086] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47162, oid: "organization_id", upload_time: "2026-07-15T19:51:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]} [2026-07-15 11:48:45.087] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:51:52Z", "value" => "online"} [2026-07-15 11:48:45.121] [DEBUG] QUERY OK db=33.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T19:51:52Z", "online", "status", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405933, itemkey: "status", value: "online", timestamp: "2026-07-15T19:51:52Z", message: "Terminal status update", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.121] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 11:48:45.121] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:51:52Z", "value" => "57"} [2026-07-15 11:48:45.122] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:48:45.135] [DEBUG] QUERY OK db=13.2ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T19:51:52Z", "57", "battery", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405934, itemkey: "battery", value: "57", timestamp: "2026-07-15T19:51:52Z", message: "Battery level", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.136] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:51:52Z", "value" => "online"} [2026-07-15 11:48:45.173] [DEBUG] QUERY OK db=30.2ms queue=0.3ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T19:51:52Z", "online", "network", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405935, itemkey: "network", value: "online", timestamp: "2026-07-15T19:51:52Z", message: "Network connectivity", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.173] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 11:48:45.174] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:51:52Z", "value" => "0"} [2026-07-15 11:48:45.175] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:48:45.202] [DEBUG] QUERY OK db=27.7ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T19:51:52Z", "0", "cpu", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405936, itemkey: "cpu", value: "0", timestamp: "2026-07-15T19:51:52Z", message: "CPU usage percentage", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.204] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.0"} [2026-07-15 11:48:45.249] [DEBUG] QUERY OK db=44.0ms queue=0.8ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T19:51:52Z", "1.0.0", "parameter_config", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405937, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T19:51:52Z", message: "Current parameters version", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.251] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.1"} [2026-07-15 11:48:45.266] [DEBUG] QUERY OK db=14.5ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T19:51:52Z", "1.0.1", "emv_config", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405938, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T19:51:52Z", message: "Current EMV config version", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.266] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:51:52Z", "value" => ""} [2026-07-15 11:48:45.284] [DEBUG] QUERY OK db=17.3ms queue=0.5ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T19:51:52Z", "keys_config", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405939, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T19:51:52Z", message: "Current keys config version", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.285] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:51:52Z", "value" => "1.0.0"} [2026-07-15 11:48:45.305] [DEBUG] QUERY OK db=20.0ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T19:51:52Z", "1.0.0", "application", 47162, ~N[2026-07-15 11:48:45], ~N[2026-07-15 11:48:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:48:45.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405940, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T19:51:52Z", message: "Current application version", status_log_id: 47162, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:48:45], updated_at: ~N[2026-07-15 11:48:45]}} [2026-07-15 11:48:45.305] [WARN ] Unexpected async result [2026-07-15 11:48:45.306] [WARN ] Unexpected async result [2026-07-15 11:48:45.308] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=21.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:48:45.318] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:48:45.328] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms queue=1.2ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:48:45.331] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.3ms queue=0.6ms idle=20.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:48:50.802] [INFO ] Running offline device check... [2026-07-15 11:48:50.802] [INFO ] Starting offline device check... [2026-07-15 11:48:50.804] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms idle=947.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-15 11:48:50.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=589.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:48:50.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.3ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.4ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.819] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.820] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.821] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.864] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:48:50], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 11:48:50.865] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 11:48:50.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.866] [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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.881] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.2ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.886] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=13.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.912] [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 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-15 11:48:50.913] [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-15 11:48:50.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.924] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.925] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.926] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.927] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:48:50.930] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 11:48:50.930] [INFO ] Offline device check completed successfully [2026-07-15 11:49:02.741] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:49:02.741] [INFO ] Incoming JSON payload: {"oid":"ca452147-d0aa-487f-8183-878b0f9f5a05","sn":"98250623730001","uploadTime":"2026-07-15T02:58:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:58:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:49:02.745] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ca452147-d0aa-487f-8183-878b0f9f5a05", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:58:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:58:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:58:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:58:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:58:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:58:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:58:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:58:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:58:52Z", "vendor" => "morefun"} [2026-07-15 11:49:02.747] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:49:02.748] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:49:02.748] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:49:02.750] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=859.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-15 11:49:02.753] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=386.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-15 11:49:02.753] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:49:02.754] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:49:02.755] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:49:02.808] [DEBUG] QUERY OK source="tms_terminals" db=53.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:49:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:49:02.809] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:49:02.814] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=56.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:49:02.865] [DEBUG] QUERY OK source="tms_terminals" db=46.6ms idle=9.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:49:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:49:02.897] [DEBUG] QUERY OK db=31.9ms idle=50.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ca452147-d0aa-487f-8183-878b0f9f5a05", "2026-07-15T02:58:52Z", ~N[2026-07-15 11:49:02], ~N[2026-07-15 11:49:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:49:02.897] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47163, oid: "ca452147-d0aa-487f-8183-878b0f9f5a05", upload_time: "2026-07-15T02:58:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:02], updated_at: ~N[2026-07-15 11:49:02]} [2026-07-15 11:49:02.898] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:58:52Z", "value" => "morefun"} [2026-07-15 11:49:02.975] [DEBUG] QUERY OK db=36.5ms queue=40.6ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "morefun", "vendor", 47163, ~N[2026-07-15 11:49:02], ~N[2026-07-15 11:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:02.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405941, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:02], updated_at: ~N[2026-07-15 11:49:02]}} [2026-07-15 11:49:02.976] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:58:52Z", "value" => "kiosk_launcher"} [2026-07-15 11:49:03.016] [DEBUG] QUERY OK db=39.8ms queue=0.1ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "kiosk_launcher", "model", 47163, ~N[2026-07-15 11:49:02], ~N[2026-07-15 11:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405942, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:02], updated_at: ~N[2026-07-15 11:49:02]}} [2026-07-15 11:49:03.016] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:58:52Z", "value" => "1.0"} [2026-07-15 11:49:03.050] [DEBUG] QUERY OK db=32.9ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "1.0", "app_version", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405943, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.053] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:58:52Z", "value" => "13"} [2026-07-15 11:49:03.093] [DEBUG] QUERY OK db=36.9ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "13", "android_version", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405944, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.093] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "932"} [2026-07-15 11:49:03.139] [DEBUG] QUERY OK db=45.5ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "932", "ram_free_mb", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405945, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.141] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:58:52Z", "value" => "WIFI"} [2026-07-15 11:49:03.180] [DEBUG] QUERY OK db=38.6ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "WIFI", "network_type", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405946, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.181] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:58:52Z", "value" => "true"} [2026-07-15 11:49:03.214] [DEBUG] QUERY OK db=33.1ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "true", "kiosk_active", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405947, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.215] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:58:52Z", "value" => ""} [2026-07-15 11:49:03.232] [DEBUG] QUERY OK db=16.3ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:58:52Z", "sim_operator", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405948, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.232] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"} [2026-07-15 11:49:03.268] [DEBUG] QUERY OK db=34.9ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "UNKNOWN", "sim_number", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405949, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.268] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"} [2026-07-15 11:49:03.311] [DEBUG] QUERY OK db=42.7ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "UNKNOWN", "sim_iccid", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405950, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.311] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"} [2026-07-15 11:49:03.360] [DEBUG] QUERY OK db=48.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "UNKNOWN", "sim_imsi", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405951, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.360] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"} [2026-07-15 11:49:03.381] [DEBUG] QUERY OK db=20.6ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "UNKNOWN", "sim_iccid2", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405952, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.386] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:58:52Z", "value" => "UNKNOWN"} [2026-07-15 11:49:03.429] [DEBUG] QUERY OK db=42.6ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "UNKNOWN", "sim_imsi2", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405953, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.429] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "13"} [2026-07-15 11:49:03.454] [DEBUG] QUERY OK db=24.2ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "13", "data_usage_mb", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405954, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.454] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:58:52Z", "value" => "0"} [2026-07-15 11:49:03.501] [DEBUG] QUERY OK db=44.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "0", "mobile_data_mb", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405955, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.504] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:58:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:49:03.535] [DEBUG] QUERY OK db=30.3ms queue=0.1ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:58:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47163, ~N[2026-07-15 11:49:03], ~N[2026-07-15 11:49:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:03.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405956, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:58:52Z", message: nil, status_log_id: 47163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:03], updated_at: ~N[2026-07-15 11:49:03]}} [2026-07-15 11:49:03.541] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=39.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-15 11:49:03.555] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:49:03.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=23.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:03.571] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=2.0ms idle=27.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:27.511] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 11:49:27.512] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T19:52:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T19:52:35Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T19:52:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T19:52:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T19:52:35Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T19:52:35Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T19:52:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T19:52:35Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T19:52:35Z","vendor":"MoreFun"} [2026-07-15 11:49:27.512] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:52:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:52:35Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:52:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:52:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:52:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T19:52:35Z", "vendor" => "MoreFun"} [2026-07-15 11:49:27.512] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 11:49:27.512] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 11:49:27.512] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 11:49:27.514] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1146.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 11:49:27.516] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=535.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 11:49:27.517] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms idle=2.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 11:49:27.519] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.5ms idle=2.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-15 11:49:27.521] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=2.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 11:49:27.560] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=1.9ms 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-15 11:49:27.563] [DEBUG] QUERY OK db=0.7ms queue=1.3ms idle=1198.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 11:49:27.563] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 11:49:27.564] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.1ms idle=42.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 11:49:27.565] [DEBUG] QUERY OK source="address" db=0.5ms idle=3.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 11:49:27.566] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 11:49:27.567] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 11:49:27.612] [DEBUG] QUERY OK db=42.7ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d098ed9302d195a39a7627a01b2a315036f829b4ebfcb4c56fe2f25c9dc2aa88", 13058, 913, ~U[2026-07-15 11:49:27Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 11:49:27.613] [INFO ] AutoPushService: Created push log 33577 for MF919 params.zip [2026-07-15 11:49:27.613] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 13058, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 11:49:27.613] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:49:27.613] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 11:49:27.618] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms queue=1.1ms idle=48.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 11:49:27.626] [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-15 11:49:27.652] [DEBUG] QUERY OK db=24.1ms idle=17.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3c7006064c8dbbc58e79dd4bc03aa80644f5ec1d7a26697dceea2cd4ac6a8004", 3204, 17947, ~U[2026-07-15 11:49:27Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 11:49:27.652] [INFO ] AutoPushService: Created push log 33578 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 11:49:27.652] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 3204, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 11:49:27.652] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 11:49:27.652] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 11:49:27.654] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=35.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 11:49:27.654] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 11:49:27.656] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`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-15 11:49:27.656] [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-15 11:49:27.660] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 11:49:27.660] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:49:27.662] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 11:49:27.666] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=7.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:49:27.667] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:49:27.667] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 11:49:27.673] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms idle=11.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:49:27.677] [INFO ] Terminal updated: 98251226730001 [2026-07-15 11:49:27.775] [DEBUG] QUERY OK source="tms_terminals" db=93.5ms idle=15.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:49:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:49:27.777] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=102.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 11:49:27.778] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 11:49:27.785] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms idle=4.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 11:49:27.786] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 11:49:27.811] [DEBUG] QUERY OK source="parameter_push_logs" db=25.0ms queue=0.1ms idle=7.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:19:27]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 11:49:27.811] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 11:49:27.811] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 11:49:27.812] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 11:49:27.815] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 11:49:27.815] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 11:49:27.816] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:49:27.840] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:49:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:49:27.871] [DEBUG] QUERY OK db=30.3ms idle=23.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T19:52:35Z", ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:49:27.871] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47164, oid: "organization_id", upload_time: "2026-07-15T19:52:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]} [2026-07-15 11:49:27.871] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T19:52:35Z", "value" => "online"} [2026-07-15 11:49:27.903] [DEBUG] QUERY OK db=31.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T19:52:35Z", "online", "status", 47164, ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:27.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405957, itemkey: "status", value: "online", timestamp: "2026-07-15T19:52:35Z", message: "Terminal status update", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]}} [2026-07-15 11:49:27.904] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 11:49:27.905] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:49:27.905] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T19:52:35Z", "value" => "57"} [2026-07-15 11:49:27.930] [DEBUG] QUERY OK db=23.7ms queue=1.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T19:52:35Z", "57", "battery", 47164, ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:27.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405958, itemkey: "battery", value: "57", timestamp: "2026-07-15T19:52:35Z", message: "Battery level", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]}} [2026-07-15 11:49:27.933] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T19:52:35Z", "value" => "online"} [2026-07-15 11:49:27.969] [DEBUG] QUERY OK db=34.5ms queue=0.8ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T19:52:35Z", "online", "network", 47164, ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:27.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405959, itemkey: "network", value: "online", timestamp: "2026-07-15T19:52:35Z", message: "Network connectivity", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]}} [2026-07-15 11:49:27.969] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 11:49:27.969] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T19:52:35Z", "value" => "0"} [2026-07-15 11:49:27.970] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:49:27.995] [DEBUG] QUERY OK db=25.7ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T19:52:35Z", "0", "cpu", 47164, ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:27.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405960, itemkey: "cpu", value: "0", timestamp: "2026-07-15T19:52:35Z", message: "CPU usage percentage", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]}} [2026-07-15 11:49:27.996] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.0"} [2026-07-15 11:49:28.019] [DEBUG] QUERY OK db=23.1ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T19:52:35Z", "1.0.0", "parameter_config", 47164, ~N[2026-07-15 11:49:27], ~N[2026-07-15 11:49:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:28.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405961, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T19:52:35Z", message: "Current parameters version", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:27], updated_at: ~N[2026-07-15 11:49:27]}} [2026-07-15 11:49:28.020] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.1"} [2026-07-15 11:49:28.057] [DEBUG] QUERY OK db=36.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T19:52:35Z", "1.0.1", "emv_config", 47164, ~N[2026-07-15 11:49:28], ~N[2026-07-15 11:49:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:28.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405962, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T19:52:35Z", message: "Current EMV config version", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:28], updated_at: ~N[2026-07-15 11:49:28]}} [2026-07-15 11:49:28.057] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T19:52:35Z", "value" => ""} [2026-07-15 11:49:28.122] [DEBUG] QUERY OK db=23.2ms queue=40.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T19:52:35Z", "keys_config", 47164, ~N[2026-07-15 11:49:28], ~N[2026-07-15 11:49:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:28.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405963, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T19:52:35Z", message: "Current keys config version", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:28], updated_at: ~N[2026-07-15 11:49:28]}} [2026-07-15 11:49:28.124] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T19:52:35Z", "value" => "1.0.0"} [2026-07-15 11:49:28.167] [DEBUG] QUERY OK db=42.6ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T19:52:35Z", "1.0.0", "application", 47164, ~N[2026-07-15 11:49:28], ~N[2026-07-15 11:49:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:28.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405964, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T19:52:35Z", message: "Current application version", status_log_id: 47164, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:28], updated_at: ~N[2026-07-15 11:49:28]}} [2026-07-15 11:49:28.168] [WARN ] Unexpected async result [2026-07-15 11:49:28.170] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=46.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-15 11:49:28.168] [WARN ] Unexpected async result [2026-07-15 11:49:28.181] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:49:28.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=15.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:28.193] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.0ms queue=0.8ms idle=19.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:32.771] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:49:32.771] [INFO ] Incoming JSON payload: {"oid":"791d1dff-cf30-4e7d-a943-6dc2edcb4645","sn":"98250623730001","uploadTime":"2026-07-15T02:59:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:59:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:49:32.772] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "791d1dff-cf30-4e7d-a943-6dc2edcb4645", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:59:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:59:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:59:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:59:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:59:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:59:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:59:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:59:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:59:22Z", "vendor" => "morefun"} [2026-07-15 11:49:32.772] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:49:32.772] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:49:32.773] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:49:32.774] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1407.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-15 11:49:32.775] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=778.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-15 11:49:32.775] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:49:32.776] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.7ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:49:32.776] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:49:32.801] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:49:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:49:32.801] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:49:32.802] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:49:32.835] [DEBUG] QUERY OK source="tms_terminals" db=32.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:49:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:49:32.860] [DEBUG] QUERY OK db=24.2ms idle=33.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "791d1dff-cf30-4e7d-a943-6dc2edcb4645", "2026-07-15T02:59:22Z", ~N[2026-07-15 11:49:32], ~N[2026-07-15 11:49:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:49:32.861] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47165, oid: "791d1dff-cf30-4e7d-a943-6dc2edcb4645", upload_time: "2026-07-15T02:59:22Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:32], updated_at: ~N[2026-07-15 11:49:32]} [2026-07-15 11:49:32.861] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:59:22Z", "value" => "morefun"} [2026-07-15 11:49:32.932] [DEBUG] QUERY OK db=29.8ms queue=41.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "morefun", "vendor", 47165, ~N[2026-07-15 11:49:32], ~N[2026-07-15 11:49:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:32.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405965, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:32], updated_at: ~N[2026-07-15 11:49:32]}} [2026-07-15 11:49:32.933] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:59:22Z", "value" => "kiosk_launcher"} [2026-07-15 11:49:32.954] [DEBUG] QUERY OK db=20.3ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "kiosk_launcher", "model", 47165, ~N[2026-07-15 11:49:32], ~N[2026-07-15 11:49:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:32.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405966, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:32], updated_at: ~N[2026-07-15 11:49:32]}} [2026-07-15 11:49:32.955] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:59:22Z", "value" => "1.0"} [2026-07-15 11:49:33.004] [DEBUG] QUERY OK db=48.8ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "1.0", "app_version", 47165, ~N[2026-07-15 11:49:32], ~N[2026-07-15 11:49:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405967, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:32], updated_at: ~N[2026-07-15 11:49:32]}} [2026-07-15 11:49:33.004] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:59:22Z", "value" => "13"} [2026-07-15 11:49:33.028] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "13", "android_version", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405968, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.028] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "931"} [2026-07-15 11:49:33.042] [DEBUG] QUERY OK db=13.5ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "931", "ram_free_mb", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405969, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.042] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:59:22Z", "value" => "WIFI"} [2026-07-15 11:49:33.081] [DEBUG] QUERY OK db=37.9ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "WIFI", "network_type", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405970, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.082] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:59:22Z", "value" => "true"} [2026-07-15 11:49:33.114] [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-15T02:59:22Z", "true", "kiosk_active", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405971, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.114] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:59:22Z", "value" => ""} [2026-07-15 11:49:33.138] [DEBUG] QUERY OK db=23.2ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:59:22Z", "sim_operator", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405972, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.138] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"} [2026-07-15 11:49:33.175] [DEBUG] QUERY OK db=36.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "UNKNOWN", "sim_number", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405973, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.175] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"} [2026-07-15 11:49:33.208] [DEBUG] QUERY OK db=32.5ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "UNKNOWN", "sim_iccid", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405974, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.208] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"} [2026-07-15 11:49:33.225] [DEBUG] QUERY OK db=16.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "UNKNOWN", "sim_imsi", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405975, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.226] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"} [2026-07-15 11:49:33.273] [DEBUG] QUERY OK db=47.2ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "UNKNOWN", "sim_iccid2", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405976, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.273] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:59:22Z", "value" => "UNKNOWN"} [2026-07-15 11:49:33.303] [DEBUG] QUERY OK db=29.5ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "UNKNOWN", "sim_imsi2", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405977, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.304] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "13"} [2026-07-15 11:49:33.339] [DEBUG] QUERY OK db=34.3ms 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-15T02:59:22Z", "13", "data_usage_mb", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405978, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.339] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:59:22Z", "value" => "0"} [2026-07-15 11:49:33.364] [DEBUG] QUERY OK db=23.7ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "0", "mobile_data_mb", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405979, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.365] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:59:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:49:33.398] [DEBUG] QUERY OK db=31.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47165, ~N[2026-07-15 11:49:33], ~N[2026-07-15 11:49:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:33.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405980, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:59:22Z", message: nil, status_log_id: 47165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:33], updated_at: ~N[2026-07-15 11:49:33]}} [2026-07-15 11:49:33.400] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=35.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:49:33.406] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:39:31]}, %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-15 11:49:33.411] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms queue=0.3ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:33.414] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=1.1ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43751, 43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:46.427] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 11:49:46.427] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"-5324329-01-10T16:53:44Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-5324329-01-10T16:53:44Z","message":"Device Connected"}]} [2026-07-15 11:49:46.427] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5324329-01-10T16:53:44Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "-5324329-01-10T16:53:44Z"} [2026-07-15 11:49:46.427] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:49:46.428] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=389.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:49:46.428] [INFO ] Terminal updated: 61250424798001 [2026-07-15 11:49:46.479] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms queue=0.4ms idle=62.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:49:46], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:49:46.481] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=51.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:49:46.515] [DEBUG] QUERY OK source="tms_terminals" db=32.8ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:49:46], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:49:46.546] [DEBUG] QUERY OK db=30.6ms idle=34.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "-5324329-01-10T16:53:44Z", ~N[2026-07-15 11:49:46], ~N[2026-07-15 11:49:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:49:46.548] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47166, oid: "org-id-placeholder", upload_time: "-5324329-01-10T16:53:44Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:46], updated_at: ~N[2026-07-15 11:49:46]} [2026-07-15 11:49:46.548] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5324329-01-10T16:53:44Z", "value" => "online"} [2026-07-15 11:49:46.572] [DEBUG] QUERY OK db=22.6ms queue=0.9ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-5324329-01-10T16:53:44Z", "online", "status", 47166, ~N[2026-07-15 11:49:46], ~N[2026-07-15 11:49:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:49:46.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405981, itemkey: "status", value: "online", timestamp: "-5324329-01-10T16:53:44Z", message: "Device Connected", status_log_id: 47166, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:49:46], updated_at: ~N[2026-07-15 11:49:46]}} [2026-07-15 11:49:46.572] [INFO ] Setting terminal 61250424798001 status to 'online' from status itemkey [2026-07-15 11:49:46.573] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:49:46.578] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=30.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:49:46.583] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:49:46.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:49:46.592] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:50:02.767] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:50:02.768] [INFO ] Incoming JSON payload: {"oid":"dfa8b8c8-e675-4488-8cc4-02891297da92","sn":"98250623730001","uploadTime":"2026-07-15T02:59:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T02:59:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:50:02.774] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dfa8b8c8-e675-4488-8cc4-02891297da92", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:59:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T02:59:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:59:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:59:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:59:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:59:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:59:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:59:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T02:59:52Z", "vendor" => "morefun"} [2026-07-15 11:50:02.774] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:50:02.776] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:50:02.776] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:50:02.777] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=691.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-15 11:50:02.780] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=412.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-15 11:50:02.780] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:50:02.782] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:50:02.782] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:50:02.810] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms queue=4.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:50:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:50:02.810] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:50:02.811] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:50:02.846] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:50:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:50:02.880] [DEBUG] QUERY OK db=34.3ms queue=0.1ms idle=34.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "dfa8b8c8-e675-4488-8cc4-02891297da92", "2026-07-15T02:59:52Z", ~N[2026-07-15 11:50:02], ~N[2026-07-15 11:50:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:50:02.883] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47167, oid: "dfa8b8c8-e675-4488-8cc4-02891297da92", upload_time: "2026-07-15T02:59:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:02], updated_at: ~N[2026-07-15 11:50:02]} [2026-07-15 11:50:02.883] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T02:59:52Z", "value" => "morefun"} [2026-07-15 11:50:02.899] [DEBUG] QUERY OK db=15.8ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "morefun", "vendor", 47167, ~N[2026-07-15 11:50:02], ~N[2026-07-15 11:50:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:02.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405982, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:02], updated_at: ~N[2026-07-15 11:50:02]}} [2026-07-15 11:50:02.899] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T02:59:52Z", "value" => "kiosk_launcher"} [2026-07-15 11:50:02.930] [DEBUG] QUERY OK db=29.8ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "kiosk_launcher", "model", 47167, ~N[2026-07-15 11:50:02], ~N[2026-07-15 11:50:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:02.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405983, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:02], updated_at: ~N[2026-07-15 11:50:02]}} [2026-07-15 11:50:02.930] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T02:59:52Z", "value" => "1.0"} [2026-07-15 11:50:02.966] [DEBUG] QUERY OK db=35.6ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "1.0", "app_version", 47167, ~N[2026-07-15 11:50:02], ~N[2026-07-15 11:50:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:02.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405984, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:02], updated_at: ~N[2026-07-15 11:50:02]}} [2026-07-15 11:50:02.967] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T02:59:52Z", "value" => "13"} [2026-07-15 11:50:03.003] [DEBUG] QUERY OK db=35.5ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "13", "android_version", 47167, ~N[2026-07-15 11:50:02], ~N[2026-07-15 11:50:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405985, itemkey: "android_version", value: "13", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:02], updated_at: ~N[2026-07-15 11:50:02]}} [2026-07-15 11:50:03.004] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "933"} [2026-07-15 11:50:03.070] [DEBUG] QUERY OK db=65.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "933", "ram_free_mb", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405986, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.071] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T02:59:52Z", "value" => "WIFI"} [2026-07-15 11:50:03.125] [DEBUG] QUERY OK db=53.7ms idle=68.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "WIFI", "network_type", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405987, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.134] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T02:59:52Z", "value" => "true"} [2026-07-15 11:50:03.188] [DEBUG] QUERY OK db=53.1ms idle=9.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "true", "kiosk_active", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405988, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.188] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T02:59:52Z", "value" => ""} [2026-07-15 11:50:03.223] [DEBUG] QUERY OK db=34.5ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T02:59:52Z", "sim_operator", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405989, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.225] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"} [2026-07-15 11:50:03.289] [DEBUG] QUERY OK db=64.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "UNKNOWN", "sim_number", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405990, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.289] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"} [2026-07-15 11:50:03.337] [DEBUG] QUERY OK db=47.4ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "UNKNOWN", "sim_iccid", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405991, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.338] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"} [2026-07-15 11:50:03.371] [DEBUG] QUERY OK db=33.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "UNKNOWN", "sim_imsi", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405992, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.372] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"} [2026-07-15 11:50:03.409] [DEBUG] QUERY OK db=37.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "UNKNOWN", "sim_iccid2", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405993, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T02:59:52Z", "value" => "UNKNOWN"} [2026-07-15 11:50:03.474] [DEBUG] QUERY OK db=64.0ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "UNKNOWN", "sim_imsi2", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405994, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.474] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "13"} [2026-07-15 11:50:03.503] [DEBUG] QUERY OK db=28.1ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "13", "data_usage_mb", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405995, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.503] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T02:59:52Z", "value" => "0"} [2026-07-15 11:50:03.719] [DEBUG] QUERY OK db=215.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "0", "mobile_data_mb", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405996, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.720] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T02:59:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:50:03.779] [DEBUG] QUERY OK db=53.8ms idle=221.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T02:59:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47167, ~N[2026-07-15 11:50:03], ~N[2026-07-15 11:50:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:03.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405997, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T02:59:52Z", message: nil, status_log_id: 47167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:03], updated_at: ~N[2026-07-15 11:50:03]}} [2026-07-15 11:50:03.782] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=61.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-15 11:50:03.807] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:50:03.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms queue=0.1ms idle=29.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:50:03.821] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=37.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:50:33.045] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:50:33.045] [INFO ] Incoming JSON payload: {"oid":"e29f718e-c919-4add-85f5-225190075253","sn":"98250623730001","uploadTime":"2026-07-15T03:00:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:00:23Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:50:33.047] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e29f718e-c919-4add-85f5-225190075253", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:00:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:00:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:00:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:00:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:00:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:00:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:00:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:00:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:00:23Z", "vendor" => "morefun"} [2026-07-15 11:50:33.047] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:50:33.047] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:50:33.047] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:50:33.048] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=800.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-15 11:50:33.049] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=649.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-15 11:50:33.049] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:50:33.049] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:50:33.050] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:50:33.105] [DEBUG] QUERY OK source="tms_terminals" db=55.0ms queue=0.1ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:50:33], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:50:33.105] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:50:33.106] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=55.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:50:33.139] [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-15 11:50:33], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:50:33.173] [DEBUG] QUERY OK db=33.7ms idle=33.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e29f718e-c919-4add-85f5-225190075253", "2026-07-15T03:00:23Z", ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:50:33.173] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47168, oid: "e29f718e-c919-4add-85f5-225190075253", upload_time: "2026-07-15T03:00:23Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]} [2026-07-15 11:50:33.173] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:00:23Z", "value" => "morefun"} [2026-07-15 11:50:33.206] [DEBUG] QUERY OK db=32.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "morefun", "vendor", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405998, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.206] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:00:23Z", "value" => "kiosk_launcher"} [2026-07-15 11:50:33.248] [DEBUG] QUERY OK db=40.8ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "kiosk_launcher", "model", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 405999, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.248] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:00:23Z", "value" => "1.0"} [2026-07-15 11:50:33.293] [DEBUG] QUERY OK db=44.4ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "1.0", "app_version", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406000, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.293] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:00:23Z", "value" => "13"} [2026-07-15 11:50:33.365] [DEBUG] QUERY OK db=71.1ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "13", "android_version", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406001, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.365] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "933"} [2026-07-15 11:50:33.396] [DEBUG] QUERY OK db=29.8ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "933", "ram_free_mb", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406002, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.396] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:00:23Z", "value" => "WIFI"} [2026-07-15 11:50:33.441] [DEBUG] QUERY OK db=44.6ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "WIFI", "network_type", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406003, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.441] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:00:23Z", "value" => "true"} [2026-07-15 11:50:33.481] [DEBUG] QUERY OK db=39.4ms queue=0.1ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "true", "kiosk_active", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406004, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.482] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:00:23Z", "value" => ""} [2026-07-15 11:50:33.540] [DEBUG] QUERY OK db=58.2ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:00:23Z", "sim_operator", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406005, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.541] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"} [2026-07-15 11:50:33.598] [DEBUG] QUERY OK db=56.5ms queue=0.1ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "UNKNOWN", "sim_number", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406006, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.598] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"} [2026-07-15 11:50:33.643] [DEBUG] QUERY OK db=44.0ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "UNKNOWN", "sim_iccid", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406007, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.643] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"} [2026-07-15 11:50:33.685] [DEBUG] QUERY OK db=41.4ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "UNKNOWN", "sim_imsi", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406008, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.685] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"} [2026-07-15 11:50:33.719] [DEBUG] QUERY OK db=33.5ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "UNKNOWN", "sim_iccid2", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406009, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.720] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:00:23Z", "value" => "UNKNOWN"} [2026-07-15 11:50:33.744] [DEBUG] QUERY OK db=23.4ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "UNKNOWN", "sim_imsi2", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406010, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.744] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "13"} [2026-07-15 11:50:33.787] [DEBUG] QUERY OK db=42.8ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "13", "data_usage_mb", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406011, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.788] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:00:23Z", "value" => "0"} [2026-07-15 11:50:33.813] [DEBUG] QUERY OK db=24.5ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "0", "mobile_data_mb", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406012, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.815] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:00:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:50:33.847] [DEBUG] QUERY OK db=30.5ms queue=0.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:23Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47168, ~N[2026-07-15 11:50:33], ~N[2026-07-15 11:50:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:50:33.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406013, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:00:23Z", message: nil, status_log_id: 47168, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:50:33], updated_at: ~N[2026-07-15 11:50:33]}} [2026-07-15 11:50:33.852] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=37.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:50:33.861] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:50:33.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:50:33.870] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.5ms idle=16.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:03.149] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:51:03.150] [INFO ] Incoming JSON payload: {"oid":"ce0785aa-b701-406d-a016-97928a548240","sn":"98250623730001","uploadTime":"2026-07-15T03:00:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:00:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:51:03.153] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ce0785aa-b701-406d-a016-97928a548240", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:00:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:00:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:00:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:00:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:00:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:00:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:00:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:00:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:00:53Z", "vendor" => "morefun"} [2026-07-15 11:51:03.153] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:51:03.153] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:51:03.153] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:51:03.154] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=824.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-15 11:51:03.155] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=784.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-15 11:51:03.155] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:51:03.156] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:51:03.157] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:51:03.209] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:51:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:51:03.209] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:51:03.210] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=52.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:51:03.240] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:51:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:51:03.283] [DEBUG] QUERY OK db=42.0ms idle=30.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ce0785aa-b701-406d-a016-97928a548240", "2026-07-15T03:00:53Z", ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:51:03.283] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47169, oid: "ce0785aa-b701-406d-a016-97928a548240", upload_time: "2026-07-15T03:00:53Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]} [2026-07-15 11:51:03.284] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:00:53Z", "value" => "morefun"} [2026-07-15 11:51:03.329] [DEBUG] QUERY OK db=44.3ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "morefun", "vendor", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406014, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.329] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:00:53Z", "value" => "kiosk_launcher"} [2026-07-15 11:51:03.363] [DEBUG] QUERY OK db=33.2ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "kiosk_launcher", "model", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406015, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.363] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:00:53Z", "value" => "1.0"} [2026-07-15 11:51:03.388] [DEBUG] QUERY OK db=23.1ms queue=1.6ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "1.0", "app_version", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406016, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.389] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:00:53Z", "value" => "13"} [2026-07-15 11:51:03.412] [DEBUG] QUERY OK db=23.2ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "13", "android_version", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406017, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.413] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "933"} [2026-07-15 11:51:03.459] [DEBUG] QUERY OK db=45.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "933", "ram_free_mb", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406018, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.459] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:00:53Z", "value" => "WIFI"} [2026-07-15 11:51:03.510] [DEBUG] QUERY OK db=50.2ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "WIFI", "network_type", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406019, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.513] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:00:53Z", "value" => "true"} [2026-07-15 11:51:03.529] [DEBUG] QUERY OK db=14.9ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "true", "kiosk_active", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406020, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.529] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:00:53Z", "value" => ""} [2026-07-15 11:51:03.573] [DEBUG] QUERY OK db=43.4ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:00:53Z", "sim_operator", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406021, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.573] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"} [2026-07-15 11:51:03.613] [DEBUG] QUERY OK db=39.0ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "UNKNOWN", "sim_number", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406022, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.615] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"} [2026-07-15 11:51:03.636] [DEBUG] QUERY OK db=20.3ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "UNKNOWN", "sim_iccid", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406023, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.637] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"} [2026-07-15 11:51:03.691] [DEBUG] QUERY OK db=54.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "UNKNOWN", "sim_imsi", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406024, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.692] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"} [2026-07-15 11:51:03.716] [DEBUG] QUERY OK db=24.1ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "UNKNOWN", "sim_iccid2", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406025, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.717] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:00:53Z", "value" => "UNKNOWN"} [2026-07-15 11:51:03.744] [DEBUG] QUERY OK db=27.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "UNKNOWN", "sim_imsi2", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406026, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.745] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "13"} [2026-07-15 11:51:03.776] [DEBUG] QUERY OK db=31.3ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "13", "data_usage_mb", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406027, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.777] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:00:53Z", "value" => "0"} [2026-07-15 11:51:03.801] [DEBUG] QUERY OK db=23.6ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:00:53Z", "0", "mobile_data_mb", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406028, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.802] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:00:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:51:03.855] [DEBUG] QUERY OK db=51.4ms 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-15T03:00:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47169, ~N[2026-07-15 11:51:03], ~N[2026-07-15 11:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:03.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406029, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:00:53Z", message: nil, status_log_id: 47169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:03], updated_at: ~N[2026-07-15 11:51:03]}} [2026-07-15 11:51:03.859] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=56.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-15 11:51:03.865] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:51:03.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=11.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:03.874] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=1.0ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:33.363] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:51:33.363] [INFO ] Incoming JSON payload: {"oid":"a951964f-8007-414d-b6c7-0ecc854e2be2","sn":"98250623730001","uploadTime":"2026-07-15T03:01:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:01:23Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:51:33.364] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a951964f-8007-414d-b6c7-0ecc854e2be2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:01:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:01:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:01:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:01:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:01:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:01:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:01:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:01:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:01:23Z", "vendor" => "morefun"} [2026-07-15 11:51:33.364] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:51:33.365] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:51:33.365] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:51:33.366] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1945.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-15 11:51:33.367] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=944.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-15 11:51:33.367] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:51:33.368] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.6ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:51:33.369] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:51:33.392] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:51:33], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:51:33.393] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:51:33.394] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=24.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:51:33.459] [DEBUG] QUERY OK source="tms_terminals" db=63.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:51:33], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:51:33.524] [DEBUG] QUERY OK db=64.4ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "a951964f-8007-414d-b6c7-0ecc854e2be2", "2026-07-15T03:01:23Z", ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:51:33.524] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47170, oid: "a951964f-8007-414d-b6c7-0ecc854e2be2", upload_time: "2026-07-15T03:01:23Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]} [2026-07-15 11:51:33.524] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:01:23Z", "value" => "morefun"} [2026-07-15 11:51:33.556] [DEBUG] QUERY OK db=32.1ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "morefun", "vendor", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406030, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.557] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:01:23Z", "value" => "kiosk_launcher"} [2026-07-15 11:51:33.580] [DEBUG] QUERY OK db=22.5ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "kiosk_launcher", "model", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406031, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.580] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:01:23Z", "value" => "1.0"} [2026-07-15 11:51:33.611] [DEBUG] QUERY OK db=30.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "1.0", "app_version", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406032, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.612] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:01:23Z", "value" => "13"} [2026-07-15 11:51:33.649] [DEBUG] QUERY OK db=36.6ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "13", "android_version", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406033, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.650] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "933"} [2026-07-15 11:51:33.673] [DEBUG] QUERY OK db=22.4ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "933", "ram_free_mb", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406034, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.673] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:01:23Z", "value" => "WIFI"} [2026-07-15 11:51:33.706] [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-15T03:01:23Z", "WIFI", "network_type", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406035, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.707] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:01:23Z", "value" => "true"} [2026-07-15 11:51:33.739] [DEBUG] QUERY OK db=31.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "true", "kiosk_active", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406036, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.739] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:01:23Z", "value" => ""} [2026-07-15 11:51:33.760] [DEBUG] QUERY OK db=20.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:01:23Z", "sim_operator", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406037, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.760] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"} [2026-07-15 11:51:33.807] [DEBUG] QUERY OK db=45.7ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "UNKNOWN", "sim_number", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406038, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.807] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"} [2026-07-15 11:51:33.840] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "UNKNOWN", "sim_iccid", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406039, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.841] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"} [2026-07-15 11:51:33.872] [DEBUG] QUERY OK db=30.9ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "UNKNOWN", "sim_imsi", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406040, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.873] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"} [2026-07-15 11:51:33.897] [DEBUG] QUERY OK db=23.8ms queue=0.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "UNKNOWN", "sim_iccid2", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406041, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.897] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:01:23Z", "value" => "UNKNOWN"} [2026-07-15 11:51:33.934] [DEBUG] QUERY OK db=35.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "UNKNOWN", "sim_imsi2", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406042, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.934] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "13"} [2026-07-15 11:51:33.972] [DEBUG] QUERY OK db=37.3ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "13", "data_usage_mb", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:33.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406043, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:33.973] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:01:23Z", "value" => "0"} [2026-07-15 11:51:34.008] [DEBUG] QUERY OK db=34.5ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "0", "mobile_data_mb", 47170, ~N[2026-07-15 11:51:33], ~N[2026-07-15 11:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:34.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406044, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:33], updated_at: ~N[2026-07-15 11:51:33]}} [2026-07-15 11:51:34.009] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:01:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:51:34.037] [DEBUG] QUERY OK db=27.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:01:23Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47170, ~N[2026-07-15 11:51:34], ~N[2026-07-15 11:51:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:34.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406045, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:01:23Z", message: nil, status_log_id: 47170, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:34], updated_at: ~N[2026-07-15 11:51:34]}} [2026-07-15 11:51:34.041] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=31.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:51:34.046] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:51:34.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=0.3ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:34.055] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.0ms queue=0.3ms idle=11.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:50.693] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:51:50.694] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:51:49Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:51:49Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:51:49Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:51:49Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:51:49Z","message":""}]} [2026-07-15 11:51:50.694] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:51:49Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:51:49Z"} [2026-07-15 11:51:50.694] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:51:50.695] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=227.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-15 11:51:50.696] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:51:50.748] [DEBUG] QUERY OK source="tms_terminals" db=52.1ms idle=211.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:51:50], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:51:50.750] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=53.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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:51:50.786] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:51:50], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:51:50.845] [DEBUG] QUERY OK db=58.1ms queue=0.3ms idle=36.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:51:49Z", ~N[2026-07-15 11:51:50], ~N[2026-07-15 11:51:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:51:50.845] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47171, oid: "org-id-placeholder", upload_time: "2026-07-15T11:51:49Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:50], updated_at: ~N[2026-07-15 11:51:50]} [2026-07-15 11:51:50.845] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => 28} [2026-07-15 11:51:50.889] [DEBUG] QUERY OK db=43.6ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:51:49Z", "28", "battery", 47171, ~N[2026-07-15 11:51:50], ~N[2026-07-15 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:50.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406046, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:51:49Z", message: nil, status_log_id: 47171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:50], updated_at: ~N[2026-07-15 11:51:50]}} [2026-07-15 11:51:50.890] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:51:49Z", "value" => 50} [2026-07-15 11:51:50.937] [DEBUG] QUERY OK db=46.9ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:51:49Z", "50", "memory", 47171, ~N[2026-07-15 11:51:50], ~N[2026-07-15 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:50.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406047, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:51:49Z", message: "Normal", status_log_id: 47171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:50], updated_at: ~N[2026-07-15 11:51:50]}} [2026-07-15 11:51:50.937] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => 50} [2026-07-15 11:51:50.970] [DEBUG] QUERY OK db=32.5ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:51:49Z", "50", "cpu", 47171, ~N[2026-07-15 11:51:50], ~N[2026-07-15 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:50.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406048, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:51:49Z", message: nil, status_log_id: 47171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:50], updated_at: ~N[2026-07-15 11:51:50]}} [2026-07-15 11:51:50.971] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:51:49Z", "value" => "online"} [2026-07-15 11:51:51.019] [DEBUG] QUERY OK db=47.5ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:51:49Z", "online", "network", 47171, ~N[2026-07-15 11:51:50], ~N[2026-07-15 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:51:51.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406049, itemkey: "network", value: "online", timestamp: "2026-07-15T11:51:49Z", message: nil, status_log_id: 47171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:51:50], updated_at: ~N[2026-07-15 11:51:50]}} [2026-07-15 11:51:51.019] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:51:51.020] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:51:51.023] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=51.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:51:51.027] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:51:51.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:51:51.034] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.7ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:53:25.488] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:53:25.488] [INFO ] Incoming JSON payload: {"oid":"e081b944-6a2c-487f-b7cd-a8017045290d","sn":"98250623730001","uploadTime":"2026-07-15T03:03:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:03:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:53:25.493] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e081b944-6a2c-487f-b7cd-a8017045290d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:03:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:03:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:03:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:03:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:03:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:03:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:03:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:03:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:03:15Z", "vendor" => "morefun"} [2026-07-15 11:53:25.493] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:53:25.493] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:53:25.493] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:53:25.494] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1008.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-15 11:53:25.495] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=737.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-15 11:53:25.496] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:53:25.498] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:53:25.498] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:53:25.552] [DEBUG] QUERY OK source="tms_terminals" db=53.4ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:53:25], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:53:25.552] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:53:25.554] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=54.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:53:25.578] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:53:25], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:53:25.627] [DEBUG] QUERY OK db=45.9ms idle=27.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e081b944-6a2c-487f-b7cd-a8017045290d", "2026-07-15T03:03:15Z", ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:53:25.627] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47172, oid: "e081b944-6a2c-487f-b7cd-a8017045290d", upload_time: "2026-07-15T03:03:15Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]} [2026-07-15 11:53:25.627] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:03:15Z", "value" => "morefun"} [2026-07-15 11:53:25.660] [DEBUG] QUERY OK db=31.9ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "morefun", "vendor", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406050, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.660] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:03:15Z", "value" => "kiosk_launcher"} [2026-07-15 11:53:25.701] [DEBUG] QUERY OK db=40.8ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "kiosk_launcher", "model", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406051, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.702] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:03:15Z", "value" => "1.0"} [2026-07-15 11:53:25.726] [DEBUG] QUERY OK db=23.4ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "1.0", "app_version", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406052, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.726] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:03:15Z", "value" => "13"} [2026-07-15 11:53:25.750] [DEBUG] QUERY OK db=22.4ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "13", "android_version", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406053, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.750] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "938"} [2026-07-15 11:53:25.784] [DEBUG] QUERY OK db=34.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "938", "ram_free_mb", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406054, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.786] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:03:15Z", "value" => "WIFI"} [2026-07-15 11:53:25.812] [DEBUG] QUERY OK db=26.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "WIFI", "network_type", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406055, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.815] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:03:15Z", "value" => "true"} [2026-07-15 11:53:25.841] [DEBUG] QUERY OK db=26.2ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "true", "kiosk_active", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406056, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.842] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:03:15Z", "value" => ""} [2026-07-15 11:53:25.876] [DEBUG] QUERY OK db=33.5ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:03:15Z", "sim_operator", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406057, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.877] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"} [2026-07-15 11:53:25.901] [DEBUG] QUERY OK db=23.9ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "UNKNOWN", "sim_number", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406058, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.902] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"} [2026-07-15 11:53:25.936] [DEBUG] QUERY OK db=34.0ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "UNKNOWN", "sim_iccid", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406059, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.939] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"} [2026-07-15 11:53:25.989] [DEBUG] QUERY OK db=49.6ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "UNKNOWN", "sim_imsi", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:25.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406060, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:25.989] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"} [2026-07-15 11:53:26.030] [DEBUG] QUERY OK db=40.2ms queue=0.1ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "UNKNOWN", "sim_iccid2", 47172, ~N[2026-07-15 11:53:25], ~N[2026-07-15 11:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:26.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406061, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:25], updated_at: ~N[2026-07-15 11:53:25]}} [2026-07-15 11:53:26.030] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:03:15Z", "value" => "UNKNOWN"} [2026-07-15 11:53:26.078] [DEBUG] QUERY OK db=46.9ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "UNKNOWN", "sim_imsi2", 47172, ~N[2026-07-15 11:53:26], ~N[2026-07-15 11:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:26.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406062, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:26], updated_at: ~N[2026-07-15 11:53:26]}} [2026-07-15 11:53:26.078] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "13"} [2026-07-15 11:53:26.113] [DEBUG] QUERY OK db=33.7ms queue=0.5ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "13", "data_usage_mb", 47172, ~N[2026-07-15 11:53:26], ~N[2026-07-15 11:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:26.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406063, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:26], updated_at: ~N[2026-07-15 11:53:26]}} [2026-07-15 11:53:26.115] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:03:15Z", "value" => "0"} [2026-07-15 11:53:26.155] [DEBUG] QUERY OK db=38.7ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "0", "mobile_data_mb", 47172, ~N[2026-07-15 11:53:26], ~N[2026-07-15 11:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:26.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406064, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:26], updated_at: ~N[2026-07-15 11:53:26]}} [2026-07-15 11:53:26.156] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:03:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:53:26.196] [DEBUG] QUERY OK db=38.7ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:03:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47172, ~N[2026-07-15 11:53:26], ~N[2026-07-15 11:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:53:26.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406065, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:03:15Z", message: nil, status_log_id: 47172, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:53:26], updated_at: ~N[2026-07-15 11:53:26]}} [2026-07-15 11:53:26.201] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=1.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:53:26.210] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:53:26.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms queue=0.1ms idle=17.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:53:26.222] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=1.5ms idle=19.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:53:50.931] [INFO ] Running offline device check... [2026-07-15 11:53:50.931] [INFO ] Starting offline device check... [2026-07-15 11:53:50.933] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=272.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-15 11:53:50.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=99.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:53:50.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms queue=0.3ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.954] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.958] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.958] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:50.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.042] [DEBUG] QUERY OK source="tms_terminals" db=66.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:53:50], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 11:53:51.042] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 11:53:51.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=67.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:53:51.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=12.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.061] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.062] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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-15 11:53:51.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.102] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:53:51.104] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 11:53:51.104] [INFO ] Offline device check completed successfully [2026-07-15 11:54:35.559] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:54:35.559] [INFO ] Incoming JSON payload: {"oid":"e7c82db2-bb84-4699-abbb-db6d37ec827c","sn":"98250623730001","uploadTime":"2026-07-15T03:04:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:04:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:54:35.561] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e7c82db2-bb84-4699-abbb-db6d37ec827c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:04:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:04:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:04:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:04:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:04:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:04:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:04:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:04:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:04:25Z", "vendor" => "morefun"} [2026-07-15 11:54:35.562] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:54:35.564] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:54:35.564] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:54:35.565] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1185.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-15 11:54:35.567] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=594.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-15 11:54:35.567] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:54:35.569] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:54:35.570] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:54:35.594] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:54:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:54:35.594] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:54:35.595] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:54:35.630] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:54:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:54:35.648] [DEBUG] QUERY OK db=17.5ms idle=35.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e7c82db2-bb84-4699-abbb-db6d37ec827c", "2026-07-15T03:04:25Z", ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:54:35.648] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47173, oid: "e7c82db2-bb84-4699-abbb-db6d37ec827c", upload_time: "2026-07-15T03:04:25Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]} [2026-07-15 11:54:35.649] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:04:25Z", "value" => "morefun"} [2026-07-15 11:54:35.681] [DEBUG] QUERY OK db=32.2ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "morefun", "vendor", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406066, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.682] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:04:25Z", "value" => "kiosk_launcher"} [2026-07-15 11:54:35.714] [DEBUG] QUERY OK db=32.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "kiosk_launcher", "model", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406067, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.714] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:04:25Z", "value" => "1.0"} [2026-07-15 11:54:35.755] [DEBUG] QUERY OK db=40.3ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "1.0", "app_version", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406068, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.756] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:04:25Z", "value" => "13"} [2026-07-15 11:54:35.778] [DEBUG] QUERY OK db=22.5ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "13", "android_version", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406069, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.779] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "933"} [2026-07-15 11:54:35.804] [DEBUG] QUERY OK db=25.0ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "933", "ram_free_mb", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406070, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.805] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:04:25Z", "value" => "WIFI"} [2026-07-15 11:54:35.837] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "WIFI", "network_type", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406071, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.838] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:04:25Z", "value" => "true"} [2026-07-15 11:54:35.867] [DEBUG] QUERY OK db=25.7ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "true", "kiosk_active", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406072, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.867] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:04:25Z", "value" => ""} [2026-07-15 11:54:35.902] [DEBUG] QUERY OK db=34.1ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:04:25Z", "sim_operator", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406073, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.902] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"} [2026-07-15 11:54:35.946] [DEBUG] QUERY OK db=41.8ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "UNKNOWN", "sim_number", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406074, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.947] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"} [2026-07-15 11:54:35.972] [DEBUG] QUERY OK db=23.0ms 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-15T03:04:25Z", "UNKNOWN", "sim_iccid", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:35.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406075, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:35.973] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"} [2026-07-15 11:54:36.008] [DEBUG] QUERY OK db=34.4ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "UNKNOWN", "sim_imsi", 47173, ~N[2026-07-15 11:54:35], ~N[2026-07-15 11:54:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406076, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:35], updated_at: ~N[2026-07-15 11:54:35]}} [2026-07-15 11:54:36.009] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"} [2026-07-15 11:54:36.051] [DEBUG] QUERY OK db=40.3ms queue=0.4ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "UNKNOWN", "sim_iccid2", 47173, ~N[2026-07-15 11:54:36], ~N[2026-07-15 11:54:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406077, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:36], updated_at: ~N[2026-07-15 11:54:36]}} [2026-07-15 11:54:36.051] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:04:25Z", "value" => "UNKNOWN"} [2026-07-15 11:54:36.079] [DEBUG] QUERY OK db=27.7ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "UNKNOWN", "sim_imsi2", 47173, ~N[2026-07-15 11:54:36], ~N[2026-07-15 11:54:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406078, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:36], updated_at: ~N[2026-07-15 11:54:36]}} [2026-07-15 11:54:36.080] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "13"} [2026-07-15 11:54:36.139] [DEBUG] QUERY OK db=57.7ms queue=0.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "13", "data_usage_mb", 47173, ~N[2026-07-15 11:54:36], ~N[2026-07-15 11:54:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406079, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:36], updated_at: ~N[2026-07-15 11:54:36]}} [2026-07-15 11:54:36.139] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:04:25Z", "value" => "0"} [2026-07-15 11:54:36.166] [DEBUG] QUERY OK db=26.4ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "0", "mobile_data_mb", 47173, ~N[2026-07-15 11:54:36], ~N[2026-07-15 11:54:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406080, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:36], updated_at: ~N[2026-07-15 11:54:36]}} [2026-07-15 11:54:36.167] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:04:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:54:36.222] [DEBUG] QUERY OK db=53.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47173, ~N[2026-07-15 11:54:36], ~N[2026-07-15 11:54:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:36.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406081, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:04:25Z", message: nil, status_log_id: 47173, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:36], updated_at: ~N[2026-07-15 11:54:36]}} [2026-07-15 11:54:36.225] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=57.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-15 11:54:36.234] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:49:46]}, %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-15 11:54:36.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.6ms idle=13.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:54:36.249] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.5ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43752, 43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:54:58.257] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 11:54:58.257] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T15:54:56Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T15:54:56Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T15:54:56Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T15:54:56Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T15:54:56Z","message":""}]} [2026-07-15 11:54:58.257] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:54:56Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T15:54:56Z"} [2026-07-15 11:54:58.257] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:54:58.258] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1213.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:54:58.258] [INFO ] Terminal updated: 61250424798001 [2026-07-15 11:54:58.284] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms idle=211.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:54:58], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:54:58.285] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=26.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:54:58.328] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:54:58], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:54:58.352] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=43.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T15:54:56Z", ~N[2026-07-15 11:54:58], ~N[2026-07-15 11:54:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:54:58.353] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47174, oid: "org-id-placeholder", upload_time: "2026-07-15T15:54:56Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:58], updated_at: ~N[2026-07-15 11:54:58]} [2026-07-15 11:54:58.353] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => 29} [2026-07-15 11:54:58.379] [DEBUG] QUERY OK db=25.8ms queue=0.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:54:56Z", "29", "battery", 47174, ~N[2026-07-15 11:54:58], ~N[2026-07-15 11:54:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:58.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406082, itemkey: "battery", value: "29", timestamp: "2026-07-15T15:54:56Z", message: nil, status_log_id: 47174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:58], updated_at: ~N[2026-07-15 11:54:58]}} [2026-07-15 11:54:58.380] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T15:54:56Z", "value" => 50} [2026-07-15 11:54:58.442] [DEBUG] QUERY OK db=59.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T15:54:56Z", "50", "memory", 47174, ~N[2026-07-15 11:54:58], ~N[2026-07-15 11:54:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:58.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406083, itemkey: "memory", value: "50", timestamp: "2026-07-15T15:54:56Z", message: "Normal", status_log_id: 47174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:58], updated_at: ~N[2026-07-15 11:54:58]}} [2026-07-15 11:54:58.442] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => 50} [2026-07-15 11:54:58.491] [DEBUG] QUERY OK db=48.3ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:54:56Z", "50", "cpu", 47174, ~N[2026-07-15 11:54:58], ~N[2026-07-15 11:54:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:58.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406084, itemkey: "cpu", value: "50", timestamp: "2026-07-15T15:54:56Z", message: nil, status_log_id: 47174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:58], updated_at: ~N[2026-07-15 11:54:58]}} [2026-07-15 11:54:58.492] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T15:54:56Z", "value" => "online"} [2026-07-15 11:54:58.515] [DEBUG] QUERY OK db=22.1ms queue=1.0ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T15:54:56Z", "online", "network", 47174, ~N[2026-07-15 11:54:58], ~N[2026-07-15 11:54:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:54:58.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406085, itemkey: "network", value: "online", timestamp: "2026-07-15T15:54:56Z", message: nil, status_log_id: 47174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:54:58], updated_at: ~N[2026-07-15 11:54:58]}} [2026-07-15 11:54:58.515] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 11:54:58.516] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:54:58.519] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=27.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:54:58.523] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:54:58.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:54:58.530] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=9.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:55:05.429] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:55:05.429] [INFO ] Incoming JSON payload: {"oid":"ae4c0104-6ea6-4d98-b4cc-4b3901f66ce2","sn":"98250623730001","uploadTime":"2026-07-15T03:04:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"ram_free_mb","value":"939","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:04:55Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:55:05.431] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ae4c0104-6ea6-4d98-b4cc-4b3901f66ce2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:04:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:04:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:04:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:04:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "939"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:04:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:04:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:04:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:04:55Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:04:55Z", "vendor" => "morefun"} [2026-07-15 11:55:05.431] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:55:05.431] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:55:05.431] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:55:05.433] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=791.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-15 11:55:05.434] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=362.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-15 11:55:05.434] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:55:05.435] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:55:05.435] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:55:05.472] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:55:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:55:05.472] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:55:05.473] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=36.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:55:05.517] [DEBUG] QUERY OK source="tms_terminals" db=42.7ms queue=0.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:55:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:55:05.551] [DEBUG] QUERY OK db=34.1ms queue=0.3ms idle=43.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ae4c0104-6ea6-4d98-b4cc-4b3901f66ce2", "2026-07-15T03:04:55Z", ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:55:05.552] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47175, oid: "ae4c0104-6ea6-4d98-b4cc-4b3901f66ce2", upload_time: "2026-07-15T03:04:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]} [2026-07-15 11:55:05.552] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:04:55Z", "value" => "morefun"} [2026-07-15 11:55:05.613] [DEBUG] QUERY OK db=60.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "morefun", "vendor", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406086, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.613] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:04:55Z", "value" => "kiosk_launcher"} [2026-07-15 11:55:05.646] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "kiosk_launcher", "model", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406087, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.646] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:04:55Z", "value" => "1.0"} [2026-07-15 11:55:05.701] [DEBUG] QUERY OK db=51.8ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "1.0", "app_version", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406088, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.702] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:04:55Z", "value" => "13"} [2026-07-15 11:55:05.736] [DEBUG] QUERY OK db=34.3ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "13", "android_version", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406089, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.737] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "939"} [2026-07-15 11:55:05.772] [DEBUG] QUERY OK db=35.0ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "939", "ram_free_mb", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406090, itemkey: "ram_free_mb", value: "939", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.772] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:04:55Z", "value" => "WIFI"} [2026-07-15 11:55:05.805] [DEBUG] QUERY OK db=32.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "WIFI", "network_type", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406091, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.805] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:04:55Z", "value" => "true"} [2026-07-15 11:55:05.861] [DEBUG] QUERY OK db=54.9ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "true", "kiosk_active", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406092, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.861] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:04:55Z", "value" => ""} [2026-07-15 11:55:05.896] [DEBUG] QUERY OK db=33.9ms queue=0.5ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:04:55Z", "sim_operator", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406093, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.896] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"} [2026-07-15 11:55:05.941] [DEBUG] QUERY OK db=44.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "UNKNOWN", "sim_number", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406094, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.942] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"} [2026-07-15 11:55:05.973] [DEBUG] QUERY OK db=30.4ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "UNKNOWN", "sim_iccid", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:05.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406095, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:05.974] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"} [2026-07-15 11:55:06.008] [DEBUG] QUERY OK db=33.6ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "UNKNOWN", "sim_imsi", 47175, ~N[2026-07-15 11:55:05], ~N[2026-07-15 11:55:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406096, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:05], updated_at: ~N[2026-07-15 11:55:05]}} [2026-07-15 11:55:06.008] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"} [2026-07-15 11:55:06.067] [DEBUG] QUERY OK db=54.1ms queue=2.2ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "UNKNOWN", "sim_iccid2", 47175, ~N[2026-07-15 11:55:06], ~N[2026-07-15 11:55:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406097, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:06], updated_at: ~N[2026-07-15 11:55:06]}} [2026-07-15 11:55:06.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:04:55Z", "value" => "UNKNOWN"} [2026-07-15 11:55:06.095] [DEBUG] QUERY OK db=27.0ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "UNKNOWN", "sim_imsi2", 47175, ~N[2026-07-15 11:55:06], ~N[2026-07-15 11:55:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406098, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:06], updated_at: ~N[2026-07-15 11:55:06]}} [2026-07-15 11:55:06.095] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "13"} [2026-07-15 11:55:06.147] [DEBUG] QUERY OK db=50.7ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "13", "data_usage_mb", 47175, ~N[2026-07-15 11:55:06], ~N[2026-07-15 11:55:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406099, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:06], updated_at: ~N[2026-07-15 11:55:06]}} [2026-07-15 11:55:06.147] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:04:55Z", "value" => "0"} [2026-07-15 11:55:06.181] [DEBUG] QUERY OK db=33.6ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "0", "mobile_data_mb", 47175, ~N[2026-07-15 11:55:06], ~N[2026-07-15 11:55:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406100, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:06], updated_at: ~N[2026-07-15 11:55:06]}} [2026-07-15 11:55:06.183] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:04:55Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:55:06.226] [DEBUG] QUERY OK db=38.6ms queue=3.0ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:04:55Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47175, ~N[2026-07-15 11:55:06], ~N[2026-07-15 11:55:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:06.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406101, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:04:55Z", message: nil, status_log_id: 47175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:06], updated_at: ~N[2026-07-15 11:55:06]}} [2026-07-15 11:55:06.230] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.9ms idle=47.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-15 11:55:06.237] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:55:06.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.8ms idle=11.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:55:06.252] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.7ms idle=19.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:55:35.375] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:55:35.375] [INFO ] Incoming JSON payload: {"oid":"9faef792-b2af-4329-a98d-b49a1ba68226","sn":"98250623730001","uploadTime":"2026-07-15T03:05:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:05:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:55:35.377] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9faef792-b2af-4329-a98d-b49a1ba68226", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:05:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:05:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:05:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:05:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:05:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:05:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:05:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:05:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:05:25Z", "vendor" => "morefun"} [2026-07-15 11:55:35.377] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:55:35.377] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:55:35.377] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:55:35.378] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1216.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-15 11:55:35.379] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=214.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-15 11:55:35.379] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:55:35.380] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:55:35.380] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:55:35.418] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:55:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:55:35.418] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:55:35.419] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=38.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:55:35.479] [DEBUG] QUERY OK source="tms_terminals" db=59.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:55:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:55:35.530] [DEBUG] QUERY OK db=50.6ms queue=0.3ms idle=60.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "9faef792-b2af-4329-a98d-b49a1ba68226", "2026-07-15T03:05:25Z", ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:55:35.530] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47176, oid: "9faef792-b2af-4329-a98d-b49a1ba68226", upload_time: "2026-07-15T03:05:25Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]} [2026-07-15 11:55:35.531] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:05:25Z", "value" => "morefun"} [2026-07-15 11:55:35.555] [DEBUG] QUERY OK db=23.4ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "morefun", "vendor", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406102, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.555] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:05:25Z", "value" => "kiosk_launcher"} [2026-07-15 11:55:35.583] [DEBUG] QUERY OK db=28.0ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "kiosk_launcher", "model", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406103, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.584] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:05:25Z", "value" => "1.0"} [2026-07-15 11:55:35.626] [DEBUG] QUERY OK db=40.8ms queue=0.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "1.0", "app_version", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406104, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.626] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:05:25Z", "value" => "13"} [2026-07-15 11:55:35.650] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "13", "android_version", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406105, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.650] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "936"} [2026-07-15 11:55:35.677] [DEBUG] QUERY OK db=25.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "936", "ram_free_mb", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406106, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.678] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:05:25Z", "value" => "WIFI"} [2026-07-15 11:55:35.723] [DEBUG] QUERY OK db=42.9ms queue=0.5ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "WIFI", "network_type", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406107, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.723] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:05:25Z", "value" => "true"} [2026-07-15 11:55:35.747] [DEBUG] QUERY OK db=23.5ms 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-15T03:05:25Z", "true", "kiosk_active", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406108, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.749] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:05:25Z", "value" => ""} [2026-07-15 11:55:35.782] [DEBUG] QUERY OK db=32.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:05:25Z", "sim_operator", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406109, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.783] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"} [2026-07-15 11:55:35.844] [DEBUG] QUERY OK db=60.8ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "UNKNOWN", "sim_number", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406110, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.844] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"} [2026-07-15 11:55:35.875] [DEBUG] QUERY OK db=30.5ms queue=0.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "UNKNOWN", "sim_iccid", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406111, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.876] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"} [2026-07-15 11:55:35.908] [DEBUG] QUERY OK db=31.3ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "UNKNOWN", "sim_imsi", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406112, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.909] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"} [2026-07-15 11:55:35.932] [DEBUG] QUERY OK db=22.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "UNKNOWN", "sim_iccid2", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406113, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.933] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:05:25Z", "value" => "UNKNOWN"} [2026-07-15 11:55:35.969] [DEBUG] QUERY OK db=36.2ms 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-15T03:05:25Z", "UNKNOWN", "sim_imsi2", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:35.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406114, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:35.970] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "13"} [2026-07-15 11:55:36.006] [DEBUG] QUERY OK db=36.0ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "13", "data_usage_mb", 47176, ~N[2026-07-15 11:55:35], ~N[2026-07-15 11:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:36.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406115, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:35], updated_at: ~N[2026-07-15 11:55:35]}} [2026-07-15 11:55:36.007] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:05:25Z", "value" => "0"} [2026-07-15 11:55:36.041] [DEBUG] QUERY OK db=33.1ms queue=0.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "0", "mobile_data_mb", 47176, ~N[2026-07-15 11:55:36], ~N[2026-07-15 11:55:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:36.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406116, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:36], updated_at: ~N[2026-07-15 11:55:36]}} [2026-07-15 11:55:36.041] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:05:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:55:36.099] [DEBUG] QUERY OK db=55.6ms queue=0.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47176, ~N[2026-07-15 11:55:36], ~N[2026-07-15 11:55:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:55:36.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406117, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:05:25Z", message: nil, status_log_id: 47176, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:55:36], updated_at: ~N[2026-07-15 11:55:36]}} [2026-07-15 11:55:36.102] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=60.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-15 11:55:36.108] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:55:36.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.1ms idle=10.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:55:36.117] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:56:06.668] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:56:06.668] [INFO ] Incoming JSON payload: {"oid":"c15de7b2-df80-48b5-8fe3-8930c0e2bdd9","sn":"98250623730001","uploadTime":"2026-07-15T03:05:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:05:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:05: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:56:06.669] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c15de7b2-df80-48b5-8fe3-8930c0e2bdd9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:05:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:05:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:05:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:05:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:05:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:05:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:05:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:05: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:05:55Z", "vendor" => "morefun"} [2026-07-15 11:56:06.670] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:56:06.670] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:56:06.670] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:56:06.673] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=414.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-15 11:56:06.676] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=287.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-15 11:56:06.676] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:56:06.677] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:56:06.677] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:56:06.716] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:56:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:56:06.716] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:56:06.717] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=39.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:56:06.750] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms queue=0.7ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:56:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:56:06.791] [DEBUG] QUERY OK db=41.1ms idle=32.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "c15de7b2-df80-48b5-8fe3-8930c0e2bdd9", "2026-07-15T03:05:55Z", ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:56:06.792] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47177, oid: "c15de7b2-df80-48b5-8fe3-8930c0e2bdd9", upload_time: "2026-07-15T03:05:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]} [2026-07-15 11:56:06.792] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:05:55Z", "value" => "morefun"} [2026-07-15 11:56:06.825] [DEBUG] QUERY OK db=31.9ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "morefun", "vendor", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:06.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406118, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:06.825] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:05:55Z", "value" => "kiosk_launcher"} [2026-07-15 11:56:06.875] [DEBUG] QUERY OK db=49.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "kiosk_launcher", "model", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:06.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406119, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:06.876] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:05:55Z", "value" => "1.0"} [2026-07-15 11:56:06.900] [DEBUG] QUERY OK db=23.5ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "1.0", "app_version", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:06.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406120, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:06.900] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:05:55Z", "value" => "13"} [2026-07-15 11:56:06.953] [DEBUG] QUERY OK db=52.7ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "13", "android_version", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:06.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406121, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:06.954] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "937"} [2026-07-15 11:56:06.994] [DEBUG] QUERY OK db=39.0ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "937", "ram_free_mb", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:06.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406122, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:06.994] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:05:55Z", "value" => "WIFI"} [2026-07-15 11:56:07.049] [DEBUG] QUERY OK db=54.8ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "WIFI", "network_type", 47177, ~N[2026-07-15 11:56:06], ~N[2026-07-15 11:56:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406123, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:06], updated_at: ~N[2026-07-15 11:56:06]}} [2026-07-15 11:56:07.050] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:05:55Z", "value" => "true"} [2026-07-15 11:56:07.110] [DEBUG] QUERY OK db=58.9ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "true", "kiosk_active", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406124, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.110] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:05:55Z", "value" => ""} [2026-07-15 11:56:07.154] [DEBUG] QUERY OK db=43.7ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:05:55Z", "sim_operator", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406125, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.155] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"} [2026-07-15 11:56:07.206] [DEBUG] QUERY OK db=50.8ms queue=0.2ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "UNKNOWN", "sim_number", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406126, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.207] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"} [2026-07-15 11:56:07.263] [DEBUG] QUERY OK db=55.3ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "UNKNOWN", "sim_iccid", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406127, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.263] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"} [2026-07-15 11:56:07.296] [DEBUG] QUERY OK db=32.4ms idle=1.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "UNKNOWN", "sim_imsi", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406128, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.297] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"} [2026-07-15 11:56:07.339] [DEBUG] QUERY OK db=41.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "UNKNOWN", "sim_iccid2", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406129, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.340] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:05:55Z", "value" => "UNKNOWN"} [2026-07-15 11:56:07.377] [DEBUG] QUERY OK db=36.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "UNKNOWN", "sim_imsi2", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406130, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.377] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "13"} [2026-07-15 11:56:07.430] [DEBUG] QUERY OK db=52.1ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "13", "data_usage_mb", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406131, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.430] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:05:55Z", "value" => "0"} [2026-07-15 11:56:07.474] [DEBUG] QUERY OK db=43.2ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05:55Z", "0", "mobile_data_mb", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406132, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.476] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:05: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:56:07.521] [DEBUG] QUERY OK db=43.1ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:05: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47177, ~N[2026-07-15 11:56:07], ~N[2026-07-15 11:56:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:07.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406133, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:05:55Z", message: nil, status_log_id: 47177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:07], updated_at: ~N[2026-07-15 11:56:07]}} [2026-07-15 11:56:07.524] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=48.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:56:07.531] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:56:07.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:56:07.544] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms queue=2.2ms idle=16.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:56:36.054] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:56:36.054] [INFO ] Incoming JSON payload: {"oid":"868af56a-f21c-4125-8910-6c8e67fc6396","sn":"98250623730001","uploadTime":"2026-07-15T03:06:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:06:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:56:36.056] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "868af56a-f21c-4125-8910-6c8e67fc6396", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:06:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:06:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:06:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:06:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:06:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:06:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:06:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:06:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:06:26Z", "vendor" => "morefun"} [2026-07-15 11:56:36.056] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:56:36.056] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:56:36.057] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:56:36.058] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=668.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-15 11:56:36.058] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=663.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-15 11:56:36.059] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:56:36.060] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:56:36.060] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:56:36.086] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:56:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:56:36.086] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:56:36.087] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=26.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:56:36.115] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:56:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:56:36.155] [DEBUG] QUERY OK db=40.1ms idle=28.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "868af56a-f21c-4125-8910-6c8e67fc6396", "2026-07-15T03:06:26Z", ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:56:36.156] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47178, oid: "868af56a-f21c-4125-8910-6c8e67fc6396", upload_time: "2026-07-15T03:06:26Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]} [2026-07-15 11:56:36.156] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:06:26Z", "value" => "morefun"} [2026-07-15 11:56:36.185] [DEBUG] QUERY OK db=28.5ms queue=0.1ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "morefun", "vendor", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406134, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.186] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:06:26Z", "value" => "kiosk_launcher"} [2026-07-15 11:56:36.217] [DEBUG] QUERY OK db=31.3ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "kiosk_launcher", "model", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406135, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.218] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:06:26Z", "value" => "1.0"} [2026-07-15 11:56:36.258] [DEBUG] QUERY OK db=39.7ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "1.0", "app_version", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406136, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.258] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:06:26Z", "value" => "13"} [2026-07-15 11:56:36.281] [DEBUG] QUERY OK db=22.5ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "13", "android_version", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406137, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.282] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "936"} [2026-07-15 11:56:36.314] [DEBUG] QUERY OK db=31.7ms 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-15T03:06:26Z", "936", "ram_free_mb", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406138, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.314] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:06:26Z", "value" => "WIFI"} [2026-07-15 11:56:36.353] [DEBUG] QUERY OK db=37.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "WIFI", "network_type", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406139, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.353] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:06:26Z", "value" => "true"} [2026-07-15 11:56:36.376] [DEBUG] QUERY OK db=22.7ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "true", "kiosk_active", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406140, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.376] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:06:26Z", "value" => ""} [2026-07-15 11:56:36.399] [DEBUG] QUERY OK db=22.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:06:26Z", "sim_operator", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406141, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.399] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"} [2026-07-15 11:56:36.431] [DEBUG] QUERY OK db=31.4ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "UNKNOWN", "sim_number", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406142, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.432] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"} [2026-07-15 11:56:36.459] [DEBUG] QUERY OK db=26.5ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "UNKNOWN", "sim_iccid", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406143, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.459] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"} [2026-07-15 11:56:36.511] [DEBUG] QUERY OK db=50.5ms queue=0.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "UNKNOWN", "sim_imsi", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406144, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.512] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"} [2026-07-15 11:56:36.557] [DEBUG] QUERY OK db=45.1ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "UNKNOWN", "sim_iccid2", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406145, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.558] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:06:26Z", "value" => "UNKNOWN"} [2026-07-15 11:56:36.595] [DEBUG] QUERY OK db=36.7ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "UNKNOWN", "sim_imsi2", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406146, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.597] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "13"} [2026-07-15 11:56:36.648] [DEBUG] QUERY OK db=49.9ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "13", "data_usage_mb", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406147, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.648] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:06:26Z", "value" => "0"} [2026-07-15 11:56:36.682] [DEBUG] QUERY OK db=33.9ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "0", "mobile_data_mb", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406148, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.685] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:06:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:56:36.730] [DEBUG] QUERY OK db=43.6ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:06:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47178, ~N[2026-07-15 11:56:36], ~N[2026-07-15 11:56:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:56:36.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406149, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:06:26Z", message: nil, status_log_id: 47178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:56:36], updated_at: ~N[2026-07-15 11:56:36]}} [2026-07-15 11:56:36.733] [DEBUG] QUERY OK source="tms_terminals" db=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:56:36.746] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:56:36.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.7ms idle=18.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:56:36.766] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.7ms idle=29.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:02.381] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 11:57:02.381] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T11:57:01Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T11:57:01Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T11:57:01Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T11:57:01Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T11:57:01Z","message":""}]} [2026-07-15 11:57:02.381] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:57:01Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T11:57:01Z"} [2026-07-15 11:57:02.381] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:57:02.382] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1843.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:57:02.383] [INFO ] Terminal updated: 61251020798002 [2026-07-15 11:57:02.422] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms idle=920.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:57:02], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:57:02.424] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=40.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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:57:02.455] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms queue=0.1ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:57:02], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:57:02.491] [DEBUG] QUERY OK db=34.1ms idle=31.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T11:57:01Z", ~N[2026-07-15 11:57:02], ~N[2026-07-15 11:57:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:57:02.491] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47179, oid: "org-id-placeholder", upload_time: "2026-07-15T11:57:01Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:02], updated_at: ~N[2026-07-15 11:57:02]} [2026-07-15 11:57:02.491] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => 28} [2026-07-15 11:57:02.521] [DEBUG] QUERY OK db=29.0ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:57:01Z", "28", "battery", 47179, ~N[2026-07-15 11:57:02], ~N[2026-07-15 11:57:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:02.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406150, itemkey: "battery", value: "28", timestamp: "2026-07-15T11:57:01Z", message: nil, status_log_id: 47179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:02], updated_at: ~N[2026-07-15 11:57:02]}} [2026-07-15 11:57:02.521] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T11:57:01Z", "value" => 50} [2026-07-15 11:57:02.574] [DEBUG] QUERY OK db=52.0ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T11:57:01Z", "50", "memory", 47179, ~N[2026-07-15 11:57:02], ~N[2026-07-15 11:57:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:02.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406151, itemkey: "memory", value: "50", timestamp: "2026-07-15T11:57:01Z", message: "Normal", status_log_id: 47179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:02], updated_at: ~N[2026-07-15 11:57:02]}} [2026-07-15 11:57:02.574] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => 50} [2026-07-15 11:57:02.608] [DEBUG] QUERY OK db=32.7ms queue=0.1ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:57:01Z", "50", "cpu", 47179, ~N[2026-07-15 11:57:02], ~N[2026-07-15 11:57:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:02.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406152, itemkey: "cpu", value: "50", timestamp: "2026-07-15T11:57:01Z", message: nil, status_log_id: 47179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:02], updated_at: ~N[2026-07-15 11:57:02]}} [2026-07-15 11:57:02.610] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T11:57:01Z", "value" => "online"} [2026-07-15 11:57:02.637] [DEBUG] QUERY OK db=25.3ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T11:57:01Z", "online", "network", 47179, ~N[2026-07-15 11:57:02], ~N[2026-07-15 11:57:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:02.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406153, itemkey: "network", value: "online", timestamp: "2026-07-15T11:57:01Z", message: nil, status_log_id: 47179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:02], updated_at: ~N[2026-07-15 11:57:02]}} [2026-07-15 11:57:02.637] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 11:57:02.637] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 11:57:02.646] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=36.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:57:02.659] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:57:02.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=23.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:02.675] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.9ms queue=1.7ms idle=24.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:23.978] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:57:23.978] [INFO ] Incoming JSON payload: {"oid":"5baabb82-406f-413a-8e15-33ad6cea1735","sn":"98250623730001","uploadTime":"2026-07-15T03:07:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:07:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:57:23.979] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5baabb82-406f-413a-8e15-33ad6cea1735", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:07:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:07:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:07:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:07:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:07:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:07:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:07:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:07:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:07:13Z", "vendor" => "morefun"} [2026-07-15 11:57:23.979] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:57:23.979] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:57:23.979] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:57:23.980] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1452.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-15 11:57:23.982] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=451.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-15 11:57:23.982] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:57:23.983] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:57:23.983] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:57:24.009] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:57:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:57:24.009] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:57:24.010] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=26.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:57:24.069] [DEBUG] QUERY OK source="tms_terminals" db=57.4ms queue=0.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:57:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:57:24.106] [DEBUG] QUERY OK db=36.4ms idle=59.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "5baabb82-406f-413a-8e15-33ad6cea1735", "2026-07-15T03:07:13Z", ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:57:24.106] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47180, oid: "5baabb82-406f-413a-8e15-33ad6cea1735", upload_time: "2026-07-15T03:07:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]} [2026-07-15 11:57:24.107] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:07:13Z", "value" => "morefun"} [2026-07-15 11:57:24.140] [DEBUG] QUERY OK db=32.6ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "morefun", "vendor", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406154, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.140] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:07:13Z", "value" => "kiosk_launcher"} [2026-07-15 11:57:24.189] [DEBUG] QUERY OK db=49.0ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "kiosk_launcher", "model", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406155, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.190] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:07:13Z", "value" => "1.0"} [2026-07-15 11:57:24.222] [DEBUG] QUERY OK db=31.6ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "1.0", "app_version", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406156, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.223] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:07:13Z", "value" => "13"} [2026-07-15 11:57:24.279] [DEBUG] QUERY OK db=55.1ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "13", "android_version", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406157, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.279] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "937"} [2026-07-15 11:57:24.312] [DEBUG] QUERY OK db=32.3ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "937", "ram_free_mb", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406158, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.312] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:07:13Z", "value" => "WIFI"} [2026-07-15 11:57:24.336] [DEBUG] QUERY OK db=23.0ms queue=0.2ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "WIFI", "network_type", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406159, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.336] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:07:13Z", "value" => "true"} [2026-07-15 11:57:24.381] [DEBUG] QUERY OK db=43.8ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "true", "kiosk_active", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406160, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:07:13Z", "value" => ""} [2026-07-15 11:57:24.407] [DEBUG] QUERY OK db=24.3ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:07:13Z", "sim_operator", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406161, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.407] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"} [2026-07-15 11:57:24.431] [DEBUG] QUERY OK db=23.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "UNKNOWN", "sim_number", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406162, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.431] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"} [2026-07-15 11:57:24.466] [DEBUG] QUERY OK db=35.0ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "UNKNOWN", "sim_iccid", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406163, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.467] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"} [2026-07-15 11:57:24.488] [DEBUG] QUERY OK db=20.9ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "UNKNOWN", "sim_imsi", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406164, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.490] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"} [2026-07-15 11:57:24.515] [DEBUG] QUERY OK db=25.0ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "UNKNOWN", "sim_iccid2", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406165, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.517] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:07:13Z", "value" => "UNKNOWN"} [2026-07-15 11:57:24.565] [DEBUG] QUERY OK db=47.8ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "UNKNOWN", "sim_imsi2", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406166, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.566] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "13"} [2026-07-15 11:57:24.622] [DEBUG] QUERY OK db=55.5ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "13", "data_usage_mb", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406167, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.623] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:07:13Z", "value" => "0"} [2026-07-15 11:57:24.671] [DEBUG] QUERY OK db=46.8ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "0", "mobile_data_mb", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406168, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.673] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:07:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:57:24.707] [DEBUG] QUERY OK db=32.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47180, ~N[2026-07-15 11:57:24], ~N[2026-07-15 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:24.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406169, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:07:13Z", message: nil, status_log_id: 47180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:24], updated_at: ~N[2026-07-15 11:57:24]}} [2026-07-15 11:57:24.715] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=42.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-15 11:57:24.728] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:57:24.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms queue=0.7ms idle=22.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:24.739] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.3ms idle=21.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:54.354] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:57:54.354] [INFO ] Incoming JSON payload: {"oid":"ff400e4e-bed4-45b8-a220-c78bb8b5a046","sn":"98250623730001","uploadTime":"2026-07-15T03:07:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:07:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:57:54.356] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ff400e4e-bed4-45b8-a220-c78bb8b5a046", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:07:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:07:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:07:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:07:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:07:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:07:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:07:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:07:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:07:44Z", "vendor" => "morefun"} [2026-07-15 11:57:54.356] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:57:54.356] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:57:54.356] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:57:54.357] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1742.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-15 11:57:54.359] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=741.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-15 11:57:54.359] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:57:54.360] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.5ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:57:54.361] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:57:54.392] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:57:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:57:54.392] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:57:54.393] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=32.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:57:54.440] [DEBUG] QUERY OK source="tms_terminals" db=46.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:57:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:57:54.463] [DEBUG] QUERY OK db=22.9ms idle=46.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ff400e4e-bed4-45b8-a220-c78bb8b5a046", "2026-07-15T03:07:44Z", ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:57:54.463] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47181, oid: "ff400e4e-bed4-45b8-a220-c78bb8b5a046", upload_time: "2026-07-15T03:07:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]} [2026-07-15 11:57:54.464] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:07:44Z", "value" => "morefun"} [2026-07-15 11:57:54.498] [DEBUG] QUERY OK db=34.4ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "morefun", "vendor", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406170, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.499] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:07:44Z", "value" => "kiosk_launcher"} [2026-07-15 11:57:54.533] [DEBUG] QUERY OK db=34.4ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "kiosk_launcher", "model", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406171, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.534] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:07:44Z", "value" => "1.0"} [2026-07-15 11:57:54.567] [DEBUG] QUERY OK db=32.6ms queue=0.1ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "1.0", "app_version", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406172, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.567] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:07:44Z", "value" => "13"} [2026-07-15 11:57:54.598] [DEBUG] QUERY OK db=30.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "13", "android_version", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406173, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.599] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "937"} [2026-07-15 11:57:54.664] [DEBUG] QUERY OK db=64.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "937", "ram_free_mb", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406174, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.664] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:07:44Z", "value" => "WIFI"} [2026-07-15 11:57:54.714] [DEBUG] QUERY OK db=49.2ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "WIFI", "network_type", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406175, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.714] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:07:44Z", "value" => "true"} [2026-07-15 11:57:54.738] [DEBUG] QUERY OK db=23.4ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "true", "kiosk_active", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406176, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.739] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:07:44Z", "value" => ""} [2026-07-15 11:57:54.764] [DEBUG] QUERY OK db=24.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:07:44Z", "sim_operator", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406177, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.764] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"} [2026-07-15 11:57:54.808] [DEBUG] QUERY OK db=43.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "UNKNOWN", "sim_number", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406178, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.809] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"} [2026-07-15 11:57:54.845] [DEBUG] QUERY OK db=35.4ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "UNKNOWN", "sim_iccid", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406179, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.845] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"} [2026-07-15 11:57:54.876] [DEBUG] QUERY OK db=30.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "UNKNOWN", "sim_imsi", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406180, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.877] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"} [2026-07-15 11:57:54.901] [DEBUG] QUERY OK db=23.9ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "UNKNOWN", "sim_iccid2", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406181, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:07:44Z", "value" => "UNKNOWN"} [2026-07-15 11:57:54.926] [DEBUG] QUERY OK db=24.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "UNKNOWN", "sim_imsi2", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406182, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.926] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "13"} [2026-07-15 11:57:54.950] [DEBUG] QUERY OK db=22.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "13", "data_usage_mb", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406183, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.950] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:07:44Z", "value" => "0"} [2026-07-15 11:57:54.990] [DEBUG] QUERY OK db=39.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "0", "mobile_data_mb", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:54.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406184, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:54.991] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:07:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:57:55.023] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:07:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47181, ~N[2026-07-15 11:57:54], ~N[2026-07-15 11:57:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:57:55.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406185, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:07:44Z", message: nil, status_log_id: 47181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:57:54], updated_at: ~N[2026-07-15 11:57:54]}} [2026-07-15 11:57:55.026] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:57:55.031] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:57:55.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:57:55.037] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.5ms idle=9.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:58:24.497] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:58:24.497] [INFO ] Incoming JSON payload: {"oid":"344cbd2d-ee01-4ca9-8d89-dac6b648f404","sn":"98250623730001","uploadTime":"2026-07-15T03:08:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"ram_free_mb","value":"935","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:08:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:58:24.499] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "344cbd2d-ee01-4ca9-8d89-dac6b648f404", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:08:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:08:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:08:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:08:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "935"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:08:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:08:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:08:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:08:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:08:14Z", "vendor" => "morefun"} [2026-07-15 11:58:24.499] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:58:24.499] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:58:24.500] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:58:24.501] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=998.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-15 11:58:24.502] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=805.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-15 11:58:24.502] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:58:24.504] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:58:24.504] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:58:24.528] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=0.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:58:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:58:24.528] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:58:24.530] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:58:24.573] [DEBUG] QUERY OK source="tms_terminals" db=42.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:58:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:58:24.622] [DEBUG] QUERY OK db=48.2ms idle=43.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "344cbd2d-ee01-4ca9-8d89-dac6b648f404", "2026-07-15T03:08:14Z", ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:58:24.622] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47182, oid: "344cbd2d-ee01-4ca9-8d89-dac6b648f404", upload_time: "2026-07-15T03:08:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]} [2026-07-15 11:58:24.622] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:08:14Z", "value" => "morefun"} [2026-07-15 11:58:24.693] [DEBUG] QUERY OK db=70.5ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "morefun", "vendor", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406186, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.693] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:08:14Z", "value" => "kiosk_launcher"} [2026-07-15 11:58:24.729] [DEBUG] QUERY OK db=34.8ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "kiosk_launcher", "model", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406187, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.729] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:08:14Z", "value" => "1.0"} [2026-07-15 11:58:24.781] [DEBUG] QUERY OK db=49.3ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "1.0", "app_version", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406188, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.782] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:08:14Z", "value" => "13"} [2026-07-15 11:58:24.822] [DEBUG] QUERY OK db=40.4ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "13", "android_version", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406189, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.823] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "935"} [2026-07-15 11:58:24.869] [DEBUG] QUERY OK db=45.6ms queue=0.1ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "935", "ram_free_mb", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406190, itemkey: "ram_free_mb", value: "935", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.869] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:08:14Z", "value" => "WIFI"} [2026-07-15 11:58:24.903] [DEBUG] QUERY OK db=33.6ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "WIFI", "network_type", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406191, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.904] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:08:14Z", "value" => "true"} [2026-07-15 11:58:24.948] [DEBUG] QUERY OK db=42.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "true", "kiosk_active", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406192, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.948] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:08:14Z", "value" => ""} [2026-07-15 11:58:24.986] [DEBUG] QUERY OK db=37.0ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:08:14Z", "sim_operator", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:24.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406193, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:24.986] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"} [2026-07-15 11:58:25.035] [DEBUG] QUERY OK db=47.8ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "UNKNOWN", "sim_number", 47182, ~N[2026-07-15 11:58:24], ~N[2026-07-15 11:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406194, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:24], updated_at: ~N[2026-07-15 11:58:24]}} [2026-07-15 11:58:25.037] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"} [2026-07-15 11:58:25.069] [DEBUG] QUERY OK db=31.4ms queue=0.6ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "UNKNOWN", "sim_iccid", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406195, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.069] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"} [2026-07-15 11:58:25.118] [DEBUG] QUERY OK db=48.5ms queue=0.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "UNKNOWN", "sim_imsi", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406196, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.119] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"} [2026-07-15 11:58:25.163] [DEBUG] QUERY OK db=43.8ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "UNKNOWN", "sim_iccid2", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406197, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.166] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:08:14Z", "value" => "UNKNOWN"} [2026-07-15 11:58:25.216] [DEBUG] QUERY OK db=49.3ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "UNKNOWN", "sim_imsi2", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406198, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.216] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "13"} [2026-07-15 11:58:25.250] [DEBUG] QUERY OK db=32.7ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "13", "data_usage_mb", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406199, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.250] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:08:14Z", "value" => "0"} [2026-07-15 11:58:25.285] [DEBUG] QUERY OK db=34.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "0", "mobile_data_mb", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406200, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.286] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:08:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:58:25.344] [DEBUG] QUERY OK db=55.3ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47182, ~N[2026-07-15 11:58:25], ~N[2026-07-15 11:58:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:25.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406201, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:08:14Z", message: nil, status_log_id: 47182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:25], updated_at: ~N[2026-07-15 11:58:25]}} [2026-07-15 11:58:25.348] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=61.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-15 11:58:25.360] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:58:25.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=20.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:58:25.372] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=23.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:58:50.487] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 11:58:50.488] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1087.9ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 11:58:50.489] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=715.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-15 11:58:50.489] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 11:58:51.105] [INFO ] Running offline device check... [2026-07-15 11:58:51.105] [INFO ] Starting offline device check... [2026-07-15 11:58:51.107] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=331.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 11:58:51.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.122] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.123] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=8.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.164] [DEBUG] QUERY OK source="tms_terminals" db=21.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:58:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 11:58:51.165] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 11:58:51.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=22.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:58:51.167] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=12.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.183] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.186] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.198] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=12.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 11:58:51.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.215] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.219] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.221] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 11:58:51.222] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 11:58:51.222] [INFO ] Offline device check completed successfully [2026-07-15 11:58:54.415] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:58:54.416] [INFO ] Incoming JSON payload: {"oid":"4a53d0b3-d907-4923-945d-b0d31cbd88e3","sn":"98250623730001","uploadTime":"2026-07-15T03:08:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:08:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:58:54.417] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4a53d0b3-d907-4923-945d-b0d31cbd88e3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:08:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:08:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:08:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:08:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:08:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:08:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:08:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:08:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:08:44Z", "vendor" => "morefun"} [2026-07-15 11:58:54.417] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:58:54.417] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:58:54.417] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:58:54.418] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1017.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-15 11:58:54.418] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=636.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-15 11:58:54.419] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:58:54.420] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:58:54.420] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:58:54.439] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:58:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:58:54.440] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:58:54.440] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=19.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:58:54.479] [DEBUG] QUERY OK source="tms_terminals" db=38.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:58:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:58:54.503] [DEBUG] QUERY OK db=23.3ms idle=39.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "4a53d0b3-d907-4923-945d-b0d31cbd88e3", "2026-07-15T03:08:44Z", ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:58:54.504] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47183, oid: "4a53d0b3-d907-4923-945d-b0d31cbd88e3", upload_time: "2026-07-15T03:08:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]} [2026-07-15 11:58:54.504] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:08:44Z", "value" => "morefun"} [2026-07-15 11:58:54.549] [DEBUG] QUERY OK db=44.5ms 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-15T03:08:44Z", "morefun", "vendor", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406202, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.549] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:08:44Z", "value" => "kiosk_launcher"} [2026-07-15 11:58:54.572] [DEBUG] QUERY OK db=22.7ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "kiosk_launcher", "model", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406203, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.573] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:08:44Z", "value" => "1.0"} [2026-07-15 11:58:54.595] [DEBUG] QUERY OK db=21.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "1.0", "app_version", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406204, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.596] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:08:44Z", "value" => "13"} [2026-07-15 11:58:54.616] [DEBUG] QUERY OK db=20.3ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "13", "android_version", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406205, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.617] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "934"} [2026-07-15 11:58:54.661] [DEBUG] QUERY OK db=42.9ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "934", "ram_free_mb", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406206, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.661] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:08:44Z", "value" => "WIFI"} [2026-07-15 11:58:54.685] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "WIFI", "network_type", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406207, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.685] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:08:44Z", "value" => "true"} [2026-07-15 11:58:54.706] [DEBUG] QUERY OK db=20.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "true", "kiosk_active", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406208, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.706] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:08:44Z", "value" => ""} [2026-07-15 11:58:54.750] [DEBUG] QUERY OK db=43.0ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:08:44Z", "sim_operator", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406209, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.750] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"} [2026-07-15 11:58:54.773] [DEBUG] QUERY OK db=22.8ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "UNKNOWN", "sim_number", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406210, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.774] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"} [2026-07-15 11:58:54.798] [DEBUG] QUERY OK db=23.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "UNKNOWN", "sim_iccid", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406211, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.798] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"} [2026-07-15 11:58:54.833] [DEBUG] QUERY OK db=34.6ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "UNKNOWN", "sim_imsi", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406212, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.833] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"} [2026-07-15 11:58:54.868] [DEBUG] QUERY OK db=34.0ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "UNKNOWN", "sim_iccid2", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406213, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.868] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:08:44Z", "value" => "UNKNOWN"} [2026-07-15 11:58:54.890] [DEBUG] QUERY OK db=20.8ms queue=0.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "UNKNOWN", "sim_imsi2", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406214, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.890] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "13"} [2026-07-15 11:58:54.926] [DEBUG] QUERY OK db=35.6ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "13", "data_usage_mb", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406215, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.927] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:08:44Z", "value" => "0"} [2026-07-15 11:58:54.959] [DEBUG] QUERY OK db=32.1ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "0", "mobile_data_mb", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:54.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406216, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:54.960] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:08:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:58:55.001] [DEBUG] QUERY OK db=39.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:08:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47183, ~N[2026-07-15 11:58:54], ~N[2026-07-15 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:58:55.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406217, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:08:44Z", message: nil, status_log_id: 47183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:58:54], updated_at: ~N[2026-07-15 11:58:54]}} [2026-07-15 11:58:55.003] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=43.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:58:55.008] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:58:55.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:58:55.015] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.4ms idle=10.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:59:24.694] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:59:24.694] [INFO ] Incoming JSON payload: {"oid":"d9f0b1de-9144-4015-aa81-8e36e775876b","sn":"98250623730001","uploadTime":"2026-07-15T03:09:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:09:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:59:24.695] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d9f0b1de-9144-4015-aa81-8e36e775876b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:09:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:09:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:09:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:09:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:09:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:09:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:09:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:09:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:09:14Z", "vendor" => "morefun"} [2026-07-15 11:59:24.695] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:59:24.695] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:59:24.695] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:59:24.696] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=816.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-15 11:59:24.699] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=294.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 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-15 11:59:24.699] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:59:24.700] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:59:24.700] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:59:24.735] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms queue=0.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:59:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:59:24.735] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:59:24.736] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=35.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:59:24.768] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:59:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:59:24.792] [DEBUG] QUERY OK db=23.4ms idle=31.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "d9f0b1de-9144-4015-aa81-8e36e775876b", "2026-07-15T03:09:14Z", ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:59:24.792] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47184, oid: "d9f0b1de-9144-4015-aa81-8e36e775876b", upload_time: "2026-07-15T03:09:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]} [2026-07-15 11:59:24.792] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:09:14Z", "value" => "morefun"} [2026-07-15 11:59:24.816] [DEBUG] QUERY OK db=23.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "morefun", "vendor", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406218, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.816] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:09:14Z", "value" => "kiosk_launcher"} [2026-07-15 11:59:24.869] [DEBUG] QUERY OK db=51.8ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "kiosk_launcher", "model", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406219, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.869] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:09:14Z", "value" => "1.0"} [2026-07-15 11:59:24.898] [DEBUG] QUERY OK db=28.8ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "1.0", "app_version", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406220, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.899] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:09:14Z", "value" => "13"} [2026-07-15 11:59:24.922] [DEBUG] QUERY OK db=22.4ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "13", "android_version", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406221, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.922] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "936"} [2026-07-15 11:59:24.967] [DEBUG] QUERY OK db=42.1ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "936", "ram_free_mb", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406222, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.967] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:09:14Z", "value" => "WIFI"} [2026-07-15 11:59:24.991] [DEBUG] QUERY OK db=23.7ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "WIFI", "network_type", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:24.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406223, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:24.993] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:09:14Z", "value" => "true"} [2026-07-15 11:59:25.026] [DEBUG] QUERY OK db=32.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "true", "kiosk_active", 47184, ~N[2026-07-15 11:59:24], ~N[2026-07-15 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406224, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:24], updated_at: ~N[2026-07-15 11:59:24]}} [2026-07-15 11:59:25.026] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:09:14Z", "value" => ""} [2026-07-15 11:59:25.069] [DEBUG] QUERY OK db=42.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:09:14Z", "sim_operator", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406225, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.076] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"} [2026-07-15 11:59:25.101] [DEBUG] QUERY OK db=24.4ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "UNKNOWN", "sim_number", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406226, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.101] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"} [2026-07-15 11:59:25.147] [DEBUG] QUERY OK db=40.1ms queue=0.2ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "UNKNOWN", "sim_iccid", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406227, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.147] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"} [2026-07-15 11:59:25.202] [DEBUG] QUERY OK db=52.8ms queue=0.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "UNKNOWN", "sim_imsi", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406228, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.203] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"} [2026-07-15 11:59:25.246] [DEBUG] QUERY OK db=43.3ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "UNKNOWN", "sim_iccid2", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406229, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.247] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:09:14Z", "value" => "UNKNOWN"} [2026-07-15 11:59:25.280] [DEBUG] QUERY OK db=32.9ms queue=0.1ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "UNKNOWN", "sim_imsi2", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406230, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.280] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "13"} [2026-07-15 11:59:25.316] [DEBUG] QUERY OK db=34.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "13", "data_usage_mb", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406231, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.316] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:09:14Z", "value" => "0"} [2026-07-15 11:59:25.341] [DEBUG] QUERY OK db=23.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "0", "mobile_data_mb", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406232, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.343] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:09:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:59:25.378] [DEBUG] QUERY OK db=33.4ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47184, ~N[2026-07-15 11:59:25], ~N[2026-07-15 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:25.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406233, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:09:14Z", message: nil, status_log_id: 47184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:25], updated_at: ~N[2026-07-15 11:59:25]}} [2026-07-15 11:59:25.381] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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-15 11:59:25.392] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:59:25.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=15.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:59:25.400] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=17.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:59:54.814] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 11:59:54.814] [INFO ] Incoming JSON payload: {"oid":"ea2598c8-c2d6-4764-a3b3-ab1d7a1d0235","sn":"98250623730001","uploadTime":"2026-07-15T03:09:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:09:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 11:59:54.816] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ea2598c8-c2d6-4764-a3b3-ab1d7a1d0235", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:09:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:09:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:09:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:09:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:09:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:09:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:09:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:09:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:09:44Z", "vendor" => "morefun"} [2026-07-15 11:59:54.816] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 11:59:54.816] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 11:59:54.816] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 11:59:54.818] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=862.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-15 11:59:54.819] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=416.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-15 11:59:54.819] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 11:59:54.820] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 11:59:54.822] [INFO ] Terminal updated: 98250623730001 [2026-07-15 11:59:54.865] [DEBUG] QUERY OK source="tms_terminals" db=42.9ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 11:59:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 11:59:54.865] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 11:59:54.867] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=45.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 11:59:54.924] [DEBUG] QUERY OK source="tms_terminals" db=56.3ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 11:59:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 11:59:54.975] [DEBUG] QUERY OK db=50.1ms idle=57.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ea2598c8-c2d6-4764-a3b3-ab1d7a1d0235", "2026-07-15T03:09:44Z", ~N[2026-07-15 11:59:54], ~N[2026-07-15 11:59:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 11:59:54.975] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47185, oid: "ea2598c8-c2d6-4764-a3b3-ab1d7a1d0235", upload_time: "2026-07-15T03:09:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:54], updated_at: ~N[2026-07-15 11:59:54]} [2026-07-15 11:59:54.976] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:09:44Z", "value" => "morefun"} [2026-07-15 11:59:55.047] [DEBUG] QUERY OK db=71.1ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "morefun", "vendor", 47185, ~N[2026-07-15 11:59:54], ~N[2026-07-15 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406234, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:54], updated_at: ~N[2026-07-15 11:59:54]}} [2026-07-15 11:59:55.048] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:09:44Z", "value" => "kiosk_launcher"} [2026-07-15 11:59:55.087] [DEBUG] QUERY OK db=38.3ms queue=0.1ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "kiosk_launcher", "model", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406235, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.087] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:09:44Z", "value" => "1.0"} [2026-07-15 11:59:55.139] [DEBUG] QUERY OK db=51.4ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "1.0", "app_version", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406236, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.139] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:09:44Z", "value" => "13"} [2026-07-15 11:59:55.175] [DEBUG] QUERY OK db=35.1ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "13", "android_version", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406237, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.176] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "936"} [2026-07-15 11:59:55.204] [DEBUG] QUERY OK db=27.4ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "936", "ram_free_mb", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406238, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.204] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:09:44Z", "value" => "WIFI"} [2026-07-15 11:59:55.243] [DEBUG] QUERY OK db=38.2ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "WIFI", "network_type", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406239, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.243] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:09:44Z", "value" => "true"} [2026-07-15 11:59:55.268] [DEBUG] QUERY OK db=24.4ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "true", "kiosk_active", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406240, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.269] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:09:44Z", "value" => ""} [2026-07-15 11:59:55.325] [DEBUG] QUERY OK db=54.5ms queue=1.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:09:44Z", "sim_operator", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406241, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.325] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"} [2026-07-15 11:59:55.356] [DEBUG] QUERY OK db=30.0ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "UNKNOWN", "sim_number", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406242, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.356] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"} [2026-07-15 11:59:55.412] [DEBUG] QUERY OK db=55.1ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "UNKNOWN", "sim_iccid", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406243, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.412] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"} [2026-07-15 11:59:55.433] [DEBUG] QUERY OK db=20.7ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "UNKNOWN", "sim_imsi", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406244, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.434] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"} [2026-07-15 11:59:55.476] [DEBUG] QUERY OK db=41.7ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "UNKNOWN", "sim_iccid2", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406245, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.476] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:09:44Z", "value" => "UNKNOWN"} [2026-07-15 11:59:55.500] [DEBUG] QUERY OK db=23.0ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "UNKNOWN", "sim_imsi2", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406246, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.500] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "13"} [2026-07-15 11:59:55.524] [DEBUG] QUERY OK db=23.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "13", "data_usage_mb", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406247, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.525] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:09:44Z", "value" => "0"} [2026-07-15 11:59:55.571] [DEBUG] QUERY OK db=45.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "0", "mobile_data_mb", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406248, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.572] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:09:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 11:59:55.607] [DEBUG] QUERY OK db=32.9ms queue=0.1ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:09:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47185, ~N[2026-07-15 11:59:55], ~N[2026-07-15 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 11:59:55.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406249, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:09:44Z", message: nil, status_log_id: 47185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 11:59:55], updated_at: ~N[2026-07-15 11:59:55]}} [2026-07-15 11:59:55.610] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=37.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 11:59:55.615] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 11:59:55.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.7ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 11:59:55.626] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=0.4ms idle=13.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:00:24.920] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:00:24.920] [INFO ] Incoming JSON payload: {"oid":"0b5290bb-e043-4d23-9db2-e0e6e8f60747","sn":"98250623730001","uploadTime":"2026-07-15T03:10:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:10:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:00:24.922] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0b5290bb-e043-4d23-9db2-e0e6e8f60747", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:10:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:10:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:10:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:10:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:10:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:10:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:10:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:10:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:10:14Z", "vendor" => "morefun"} [2026-07-15 12:00:24.922] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:00:24.923] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:00:24.923] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:00:24.924] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=888.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-15 12:00:24.926] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=521.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-15 12:00:24.926] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:00:24.927] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:00:24.927] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:00:24.994] [DEBUG] QUERY OK source="tms_terminals" db=65.3ms queue=1.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:00:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:00:24.994] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:00:24.996] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=67.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:00:25.049] [DEBUG] QUERY OK source="tms_terminals" db=52.0ms queue=0.8ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:00:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:00:25.125] [DEBUG] QUERY OK db=74.0ms queue=0.4ms idle=13.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "0b5290bb-e043-4d23-9db2-e0e6e8f60747", "2026-07-15T03:10:14Z", ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:00:25.125] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47186, oid: "0b5290bb-e043-4d23-9db2-e0e6e8f60747", upload_time: "2026-07-15T03:10:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]} [2026-07-15 12:00:25.125] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:10:14Z", "value" => "morefun"} [2026-07-15 12:00:25.196] [DEBUG] QUERY OK db=70.0ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "morefun", "vendor", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406250, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.196] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:10:14Z", "value" => "kiosk_launcher"} [2026-07-15 12:00:25.246] [DEBUG] QUERY OK db=47.7ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "kiosk_launcher", "model", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406251, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.247] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:10:14Z", "value" => "1.0"} [2026-07-15 12:00:25.301] [DEBUG] QUERY OK db=53.9ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "1.0", "app_version", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406252, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.301] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:10:14Z", "value" => "13"} [2026-07-15 12:00:25.354] [DEBUG] QUERY OK db=52.3ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "13", "android_version", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406253, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.355] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "937"} [2026-07-15 12:00:25.410] [DEBUG] QUERY OK db=55.3ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "937", "ram_free_mb", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406254, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.412] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:10:14Z", "value" => "WIFI"} [2026-07-15 12:00:25.466] [DEBUG] QUERY OK db=53.1ms queue=0.1ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "WIFI", "network_type", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406255, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.466] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:10:14Z", "value" => "true"} [2026-07-15 12:00:25.520] [DEBUG] QUERY OK db=53.5ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "true", "kiosk_active", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406256, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.522] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:10:14Z", "value" => ""} [2026-07-15 12:00:25.599] [DEBUG] QUERY OK db=77.1ms queue=0.1ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:10:14Z", "sim_operator", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406257, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.600] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"} [2026-07-15 12:00:25.665] [DEBUG] QUERY OK db=64.8ms idle=79.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "UNKNOWN", "sim_number", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406258, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.665] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"} [2026-07-15 12:00:25.715] [DEBUG] QUERY OK db=48.4ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "UNKNOWN", "sim_iccid", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406259, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.715] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"} [2026-07-15 12:00:25.776] [DEBUG] QUERY OK db=60.4ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "UNKNOWN", "sim_imsi", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406260, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.776] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"} [2026-07-15 12:00:25.839] [DEBUG] QUERY OK db=61.3ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "UNKNOWN", "sim_iccid2", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406261, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.839] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:10:14Z", "value" => "UNKNOWN"} [2026-07-15 12:00:25.877] [DEBUG] QUERY OK db=37.1ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "UNKNOWN", "sim_imsi2", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406262, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.877] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "13"} [2026-07-15 12:00:25.931] [DEBUG] QUERY OK db=53.1ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "13", "data_usage_mb", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406263, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.936] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:10:14Z", "value" => "0"} [2026-07-15 12:00:25.991] [DEBUG] QUERY OK db=55.1ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "0", "mobile_data_mb", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:25.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406264, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:25.992] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:10:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:00:26.053] [DEBUG] QUERY OK db=52.0ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47186, ~N[2026-07-15 12:00:25], ~N[2026-07-15 12:00:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:26.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406265, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:10:14Z", message: nil, status_log_id: 47186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:25], updated_at: ~N[2026-07-15 12:00:25]}} [2026-07-15 12:00:26.060] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=15.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:00:26.067] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:00:26.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=17.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:00:26.077] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.7ms idle=15.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:00:54.845] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:00:54.845] [INFO ] Incoming JSON payload: {"oid":"49bf5cb6-6f58-49a7-99ea-cdd458de0046","sn":"98250623730001","uploadTime":"2026-07-15T03:10:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:10:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:00:54.847] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "49bf5cb6-6f58-49a7-99ea-cdd458de0046", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:10:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:10:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:10:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:10:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:10:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:10:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:10:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:10:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:10:45Z", "vendor" => "morefun"} [2026-07-15 12:00:54.847] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:00:54.847] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:00:54.847] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:00:54.848] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=735.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-15 12:00:54.848] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=445.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-15 12:00:54.848] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:00:54.849] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:00:54.849] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:00:54.904] [DEBUG] QUERY OK source="tms_terminals" db=54.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:00:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:00:54.904] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:00:54.905] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=55.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:00:54.937] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:00:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:00:54.982] [DEBUG] QUERY OK db=44.4ms queue=0.4ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "49bf5cb6-6f58-49a7-99ea-cdd458de0046", "2026-07-15T03:10:45Z", ~N[2026-07-15 12:00:54], ~N[2026-07-15 12:00:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:00:54.983] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47187, oid: "49bf5cb6-6f58-49a7-99ea-cdd458de0046", upload_time: "2026-07-15T03:10:45Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:54], updated_at: ~N[2026-07-15 12:00:54]} [2026-07-15 12:00:54.983] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:10:45Z", "value" => "morefun"} [2026-07-15 12:00:55.016] [DEBUG] QUERY OK db=32.5ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "morefun", "vendor", 47187, ~N[2026-07-15 12:00:54], ~N[2026-07-15 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406266, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:54], updated_at: ~N[2026-07-15 12:00:54]}} [2026-07-15 12:00:55.016] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:10:45Z", "value" => "kiosk_launcher"} [2026-07-15 12:00:55.058] [DEBUG] QUERY OK db=40.9ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "kiosk_launcher", "model", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406267, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.058] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:10:45Z", "value" => "1.0"} [2026-07-15 12:00:55.116] [DEBUG] QUERY OK db=57.6ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "1.0", "app_version", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406268, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.117] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:10:45Z", "value" => "13"} [2026-07-15 12:00:55.166] [DEBUG] QUERY OK db=48.6ms queue=0.5ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "13", "android_version", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406269, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.167] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "936"} [2026-07-15 12:00:55.194] [DEBUG] QUERY OK db=26.8ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "936", "ram_free_mb", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406270, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.194] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:10:45Z", "value" => "WIFI"} [2026-07-15 12:00:55.247] [DEBUG] QUERY OK db=52.0ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "WIFI", "network_type", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406271, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.248] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:10:45Z", "value" => "true"} [2026-07-15 12:00:55.272] [DEBUG] QUERY OK db=24.1ms queue=0.3ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "true", "kiosk_active", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406272, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.273] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:10:45Z", "value" => ""} [2026-07-15 12:00:55.312] [DEBUG] QUERY OK db=38.2ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:10:45Z", "sim_operator", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406273, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.313] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"} [2026-07-15 12:00:55.350] [DEBUG] QUERY OK db=34.1ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "UNKNOWN", "sim_number", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406274, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.350] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"} [2026-07-15 12:00:55.374] [DEBUG] QUERY OK db=23.8ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "UNKNOWN", "sim_iccid", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406275, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.375] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"} [2026-07-15 12:00:55.408] [DEBUG] QUERY OK db=33.0ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "UNKNOWN", "sim_imsi", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406276, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.408] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"} [2026-07-15 12:00:55.447] [DEBUG] QUERY OK db=37.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "UNKNOWN", "sim_iccid2", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406277, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.447] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:10:45Z", "value" => "UNKNOWN"} [2026-07-15 12:00:55.470] [DEBUG] QUERY OK db=23.0ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "UNKNOWN", "sim_imsi2", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406278, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.471] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "13"} [2026-07-15 12:00:55.503] [DEBUG] QUERY OK db=31.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "13", "data_usage_mb", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406279, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.503] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:10:45Z", "value" => "0"} [2026-07-15 12:00:55.541] [DEBUG] QUERY OK db=37.1ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "0", "mobile_data_mb", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406280, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.542] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:10:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:00:55.573] [DEBUG] QUERY OK db=30.0ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:10:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47187, ~N[2026-07-15 12:00:55], ~N[2026-07-15 12:00:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:00:55.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406281, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:10:45Z", message: nil, status_log_id: 47187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:00:55], updated_at: ~N[2026-07-15 12:00:55]}} [2026-07-15 12:00:55.575] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-15 12:00:55.580] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:00:55.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:00:55.588] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.3ms queue=0.5ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:03:07.422] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:03:07.423] [INFO ] Incoming JSON payload: {"oid":"3d077f6f-45c8-4640-b1ab-a21811367c6d","sn":"98250623730001","uploadTime":"2026-07-15T03:12:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"ram_free_mb","value":"940","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:12:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:12: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:03:07.424] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3d077f6f-45c8-4640-b1ab-a21811367c6d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:12:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:12:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:12:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:12:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "940"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:12:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:12:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:12:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:12: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:12:57Z", "vendor" => "morefun"} [2026-07-15 12:03:07.424] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:03:07.424] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:03:07.424] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:03:07.428] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=1013.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-15 12:03:07.430] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=927.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-15 12:03:07.430] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:03:07.434] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:03:07.434] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:03:07.476] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:03:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:03:07.476] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:03:07.478] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=42.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:03:07.507] [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-15 12:03:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:03:07.529] [DEBUG] QUERY OK db=20.9ms queue=0.1ms idle=3.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3d077f6f-45c8-4640-b1ab-a21811367c6d", "2026-07-15T03:12:57Z", ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:03:07.529] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47188, oid: "3d077f6f-45c8-4640-b1ab-a21811367c6d", upload_time: "2026-07-15T03:12:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]} [2026-07-15 12:03:07.529] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:12:57Z", "value" => "morefun"} [2026-07-15 12:03:07.575] [DEBUG] QUERY OK db=45.1ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "morefun", "vendor", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406282, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.576] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:12:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:03:07.601] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "kiosk_launcher", "model", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406283, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.601] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:12:57Z", "value" => "1.0"} [2026-07-15 12:03:07.625] [DEBUG] QUERY OK db=23.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "1.0", "app_version", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406284, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.626] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:12:57Z", "value" => "13"} [2026-07-15 12:03:07.676] [DEBUG] QUERY OK db=49.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "13", "android_version", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406285, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.677] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "940"} [2026-07-15 12:03:07.699] [DEBUG] QUERY OK db=22.1ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "940", "ram_free_mb", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406286, itemkey: "ram_free_mb", value: "940", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.700] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:12:57Z", "value" => "WIFI"} [2026-07-15 12:03:07.721] [DEBUG] QUERY OK db=20.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "WIFI", "network_type", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406287, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.721] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:12:57Z", "value" => "true"} [2026-07-15 12:03:07.766] [DEBUG] QUERY OK db=44.4ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "true", "kiosk_active", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406288, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.766] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:12:57Z", "value" => ""} [2026-07-15 12:03:07.793] [DEBUG] QUERY OK db=24.0ms queue=1.9ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:12:57Z", "sim_operator", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406289, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.793] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"} [2026-07-15 12:03:07.819] [DEBUG] QUERY OK db=25.6ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "UNKNOWN", "sim_number", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406290, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.820] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"} [2026-07-15 12:03:07.856] [DEBUG] QUERY OK db=35.8ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "UNKNOWN", "sim_iccid", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406291, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.857] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"} [2026-07-15 12:03:07.874] [DEBUG] QUERY OK db=16.8ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "UNKNOWN", "sim_imsi", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406292, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.874] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"} [2026-07-15 12:03:07.898] [DEBUG] QUERY OK db=22.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "UNKNOWN", "sim_iccid2", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406293, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.899] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:12:57Z", "value" => "UNKNOWN"} [2026-07-15 12:03:07.925] [DEBUG] QUERY OK db=25.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "UNKNOWN", "sim_imsi2", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406294, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.926] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "13"} [2026-07-15 12:03:07.976] [DEBUG] QUERY OK db=46.0ms queue=0.1ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "13", "data_usage_mb", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406295, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:07.977] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:12:57Z", "value" => "0"} [2026-07-15 12:03:07.998] [DEBUG] QUERY OK db=20.9ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12:57Z", "0", "mobile_data_mb", 47188, ~N[2026-07-15 12:03:07], ~N[2026-07-15 12:03:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:07.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406296, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:07], updated_at: ~N[2026-07-15 12:03:07]}} [2026-07-15 12:03:08.000] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:12: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:03:08.032] [DEBUG] QUERY OK db=30.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:12: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47188, ~N[2026-07-15 12:03:08], ~N[2026-07-15 12:03:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:08.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406297, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:12:57Z", message: nil, status_log_id: 47188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:08], updated_at: ~N[2026-07-15 12:03:08]}} [2026-07-15 12:03:08.036] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=36.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-15 12:03:08.041] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:03:08.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.2ms idle=10.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:03:08.051] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.2ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:03:37.841] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:03:37.841] [INFO ] Incoming JSON payload: {"oid":"6187cd60-14dd-4aef-ad96-88290b129afd","sn":"98250623730001","uploadTime":"2026-07-15T03:13:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:13:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:03:37.843] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6187cd60-14dd-4aef-ad96-88290b129afd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:13:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:13:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:13:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:13:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:13:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:13:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:13:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:13:27Z", "vendor" => "morefun"} [2026-07-15 12:03:37.843] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:03:37.843] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:03:37.843] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:03:37.844] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=431.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-15 12:03:37.846] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=243.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-15 12:03:37.846] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:03:37.849] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.7ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:03:37.850] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:03:37.877] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:03:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:03:37.877] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:03:37.878] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=27.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:03:37.919] [DEBUG] QUERY OK source="tms_terminals" db=39.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:03:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:03:37.942] [DEBUG] QUERY OK db=22.8ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "6187cd60-14dd-4aef-ad96-88290b129afd", "2026-07-15T03:13:27Z", ~N[2026-07-15 12:03:37], ~N[2026-07-15 12:03:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:03:37.942] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47189, oid: "6187cd60-14dd-4aef-ad96-88290b129afd", upload_time: "2026-07-15T03:13:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:37], updated_at: ~N[2026-07-15 12:03:37]} [2026-07-15 12:03:37.942] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:13:27Z", "value" => "morefun"} [2026-07-15 12:03:37.966] [DEBUG] QUERY OK db=23.2ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "morefun", "vendor", 47189, ~N[2026-07-15 12:03:37], ~N[2026-07-15 12:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:37.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406298, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:37], updated_at: ~N[2026-07-15 12:03:37]}} [2026-07-15 12:03:37.966] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:13:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:03:38.002] [DEBUG] QUERY OK db=34.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "kiosk_launcher", "model", 47189, ~N[2026-07-15 12:03:37], ~N[2026-07-15 12:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406299, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:37], updated_at: ~N[2026-07-15 12:03:37]}} [2026-07-15 12:03:38.003] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:13:27Z", "value" => "1.0"} [2026-07-15 12:03:38.028] [DEBUG] QUERY OK db=24.8ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "1.0", "app_version", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406300, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.029] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:13:27Z", "value" => "13"} [2026-07-15 12:03:38.062] [DEBUG] QUERY OK db=33.3ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "13", "android_version", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406301, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.063] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "936"} [2026-07-15 12:03:38.119] [DEBUG] QUERY OK db=54.6ms queue=1.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "936", "ram_free_mb", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406302, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.120] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:13:27Z", "value" => "WIFI"} [2026-07-15 12:03:38.154] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "WIFI", "network_type", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406303, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.155] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:13:27Z", "value" => "true"} [2026-07-15 12:03:38.197] [DEBUG] QUERY OK db=42.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "true", "kiosk_active", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406304, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.198] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:13:27Z", "value" => ""} [2026-07-15 12:03:38.231] [DEBUG] QUERY OK db=31.7ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:13:27Z", "sim_operator", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406305, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.233] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"} [2026-07-15 12:03:38.279] [DEBUG] QUERY OK db=45.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-15T03:13:27Z", "UNKNOWN", "sim_number", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406306, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.280] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"} [2026-07-15 12:03:38.312] [DEBUG] QUERY OK db=30.9ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "UNKNOWN", "sim_iccid", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406307, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.312] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"} [2026-07-15 12:03:38.342] [DEBUG] QUERY OK db=29.4ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "UNKNOWN", "sim_imsi", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406308, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.343] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"} [2026-07-15 12:03:38.376] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "UNKNOWN", "sim_iccid2", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406309, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.376] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:13:27Z", "value" => "UNKNOWN"} [2026-07-15 12:03:38.411] [DEBUG] QUERY OK db=34.4ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "UNKNOWN", "sim_imsi2", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406310, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.412] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "13"} [2026-07-15 12:03:38.436] [DEBUG] QUERY OK db=24.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "13", "data_usage_mb", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406311, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.437] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:13:27Z", "value" => "0"} [2026-07-15 12:03:38.482] [DEBUG] QUERY OK db=44.6ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:27Z", "0", "mobile_data_mb", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406312, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.483] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:03:38.541] [DEBUG] QUERY OK db=56.4ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47189, ~N[2026-07-15 12:03:38], ~N[2026-07-15 12:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:03:38.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406313, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:13:27Z", message: nil, status_log_id: 47189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:03:38], updated_at: ~N[2026-07-15 12:03:38]}} [2026-07-15 12:03:38.548] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=64.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-15 12:03:38.564] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:03:38.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=24.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:03:38.575] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=2.8ms idle=23.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:03:51.223] [INFO ] Running offline device check... [2026-07-15 12:03:51.223] [INFO ] Starting offline device check... [2026-07-15 12:03:51.225] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=811.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-15 12:03:51.232] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=586.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:03:51.236] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.241] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.251] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.266] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.268] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.293] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:03:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:03:51.293] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:03:51.294] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=25.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.314] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.315] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.329] [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 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-15 12:03:51.366] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms idle=13.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:03:51], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:03:51.367] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:03:51.368] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=38.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:03:51.368] [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-15 12:03:51.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.378] [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 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-15 12:03:51.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.380] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.385] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.390] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:03:51.395] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:03:51.396] [INFO ] Offline device check completed successfully [2026-07-15 12:04:07.635] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:04:07.635] [INFO ] Incoming JSON payload: {"oid":"940a5f29-f676-48fe-955f-1f26546f543f","sn":"98250623730001","uploadTime":"2026-07-15T03:13:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:13:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:04:07.636] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "940a5f29-f676-48fe-955f-1f26546f543f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:13:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:13:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:13:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:13:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:13:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:13:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:13:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:13:57Z", "vendor" => "morefun"} [2026-07-15 12:04:07.636] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:04:07.636] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:04:07.636] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:04:07.638] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=0.1ms idle=942.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-15 12:04:07.639] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=216.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-15 12:04:07.639] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:04:07.645] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:04:07.645] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:04:07.683] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:04:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:04:07.683] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:04:07.684] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=38.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:04:07.726] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:04:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:04:07.756] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "940a5f29-f676-48fe-955f-1f26546f543f", "2026-07-15T03:13:57Z", ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:04:07.756] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47190, oid: "940a5f29-f676-48fe-955f-1f26546f543f", upload_time: "2026-07-15T03:13:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]} [2026-07-15 12:04:07.756] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:13:57Z", "value" => "morefun"} [2026-07-15 12:04:07.799] [DEBUG] QUERY OK db=41.6ms queue=0.3ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "morefun", "vendor", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406314, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.799] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:13:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:04:07.830] [DEBUG] QUERY OK db=30.1ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "kiosk_launcher", "model", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406315, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.830] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:13:57Z", "value" => "1.0"} [2026-07-15 12:04:07.865] [DEBUG] QUERY OK db=34.1ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "1.0", "app_version", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406316, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.865] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:13:57Z", "value" => "13"} [2026-07-15 12:04:07.898] [DEBUG] QUERY OK db=32.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "13", "android_version", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406317, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.898] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "936"} [2026-07-15 12:04:07.925] [DEBUG] QUERY OK db=26.4ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "936", "ram_free_mb", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406318, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.926] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:13:57Z", "value" => "WIFI"} [2026-07-15 12:04:07.957] [DEBUG] QUERY OK db=28.9ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "WIFI", "network_type", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406319, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.957] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:13:57Z", "value" => "true"} [2026-07-15 12:04:07.992] [DEBUG] QUERY OK db=33.9ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "true", "kiosk_active", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:07.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406320, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:07.993] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:13:57Z", "value" => ""} [2026-07-15 12:04:08.025] [DEBUG] QUERY OK db=32.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:13:57Z", "sim_operator", 47190, ~N[2026-07-15 12:04:07], ~N[2026-07-15 12:04:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406321, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:07], updated_at: ~N[2026-07-15 12:04:07]}} [2026-07-15 12:04:08.026] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"} [2026-07-15 12:04:08.059] [DEBUG] QUERY OK db=32.6ms 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-15T03:13:57Z", "UNKNOWN", "sim_number", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406322, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.059] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"} [2026-07-15 12:04:08.092] [DEBUG] QUERY OK db=32.8ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "UNKNOWN", "sim_iccid", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406323, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.093] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"} [2026-07-15 12:04:08.117] [DEBUG] QUERY OK db=23.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "UNKNOWN", "sim_imsi", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406324, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.117] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"} [2026-07-15 12:04:08.150] [DEBUG] QUERY OK db=30.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "UNKNOWN", "sim_iccid2", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406325, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.150] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:13:57Z", "value" => "UNKNOWN"} [2026-07-15 12:04:08.194] [DEBUG] QUERY OK db=42.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "UNKNOWN", "sim_imsi2", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406326, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.194] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "13"} [2026-07-15 12:04:08.220] [DEBUG] QUERY OK db=25.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "13", "data_usage_mb", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406327, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.220] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:13:57Z", "value" => "0"} [2026-07-15 12:04:08.260] [DEBUG] QUERY OK db=39.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13:57Z", "0", "mobile_data_mb", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406328, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.262] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:04:08.297] [DEBUG] QUERY OK db=34.2ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:13: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47190, ~N[2026-07-15 12:04:08], ~N[2026-07-15 12:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:08.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406329, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:13:57Z", message: nil, status_log_id: 47190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:08], updated_at: ~N[2026-07-15 12:04:08]}} [2026-07-15 12:04:08.302] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=40.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-15 12:04:08.318] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:04:08.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.5ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:04:08.344] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.6ms queue=0.9ms idle=38.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:04:37.750] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:04:37.750] [INFO ] Incoming JSON payload: {"oid":"cd035d44-fc28-413f-9f93-a7bb8387bdbc","sn":"98250623730001","uploadTime":"2026-07-15T03:14:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"ram_free_mb","value":"935","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:14:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:04:37.753] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cd035d44-fc28-413f-9f93-a7bb8387bdbc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:14:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:14:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:14:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:14:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "935"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:14:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:14:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:14:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:14:27Z", "vendor" => "morefun"} [2026-07-15 12:04:37.755] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:04:37.755] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:04:37.755] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:04:37.756] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1326.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-15 12:04:37.757] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=963.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-15 12:04:37.757] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:04:37.762] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:04:37.762] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:04:37.809] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:04:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:04:37.810] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:04:37.811] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=13.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:04:37.891] [DEBUG] QUERY OK source="tms_terminals" db=79.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:04:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:04:37.948] [DEBUG] QUERY OK db=56.2ms idle=81.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "cd035d44-fc28-413f-9f93-a7bb8387bdbc", "2026-07-15T03:14:27Z", ~N[2026-07-15 12:04:37], ~N[2026-07-15 12:04:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:04:37.948] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47191, oid: "cd035d44-fc28-413f-9f93-a7bb8387bdbc", upload_time: "2026-07-15T03:14:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:37], updated_at: ~N[2026-07-15 12:04:37]} [2026-07-15 12:04:37.949] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:14:27Z", "value" => "morefun"} [2026-07-15 12:04:38.032] [DEBUG] QUERY OK db=83.0ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "morefun", "vendor", 47191, ~N[2026-07-15 12:04:37], ~N[2026-07-15 12:04:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406330, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:37], updated_at: ~N[2026-07-15 12:04:37]}} [2026-07-15 12:04:38.034] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:14:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:04:38.108] [DEBUG] QUERY OK db=73.5ms idle=85.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "kiosk_launcher", "model", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406331, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.108] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:14:27Z", "value" => "1.0"} [2026-07-15 12:04:38.181] [DEBUG] QUERY OK db=72.9ms idle=76.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "1.0", "app_version", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406332, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.182] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:14:27Z", "value" => "13"} [2026-07-15 12:04:38.243] [DEBUG] QUERY OK db=59.6ms queue=0.7ms idle=74.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "13", "android_version", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406333, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.244] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "935"} [2026-07-15 12:04:38.309] [DEBUG] QUERY OK db=65.1ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "935", "ram_free_mb", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406334, itemkey: "ram_free_mb", value: "935", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.310] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:14:27Z", "value" => "WIFI"} [2026-07-15 12:04:38.352] [DEBUG] QUERY OK db=41.5ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "WIFI", "network_type", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406335, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.352] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:14:27Z", "value" => "true"} [2026-07-15 12:04:38.405] [DEBUG] QUERY OK db=53.0ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "true", "kiosk_active", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406336, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.406] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:14:27Z", "value" => ""} [2026-07-15 12:04:38.457] [DEBUG] QUERY OK db=50.6ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:14:27Z", "sim_operator", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406337, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.458] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"} [2026-07-15 12:04:38.481] [DEBUG] QUERY OK db=22.9ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "UNKNOWN", "sim_number", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406338, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.481] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"} [2026-07-15 12:04:38.505] [DEBUG] QUERY OK db=23.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "UNKNOWN", "sim_iccid", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406339, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.506] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"} [2026-07-15 12:04:38.552] [DEBUG] QUERY OK db=44.6ms queue=0.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "UNKNOWN", "sim_imsi", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406340, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.553] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"} [2026-07-15 12:04:38.585] [DEBUG] QUERY OK db=31.7ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "UNKNOWN", "sim_iccid2", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406341, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.585] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:14:27Z", "value" => "UNKNOWN"} [2026-07-15 12:04:38.615] [DEBUG] QUERY OK db=29.6ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "UNKNOWN", "sim_imsi2", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406342, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.616] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "13"} [2026-07-15 12:04:38.648] [DEBUG] QUERY OK db=31.6ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:27Z", "13", "data_usage_mb", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406343, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.648] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:14:27Z", "value" => "0"} [2026-07-15 12:04:38.663] [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-15T03:14:27Z", "0", "mobile_data_mb", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406344, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.666] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:04:38.716] [DEBUG] QUERY OK db=49.1ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47191, ~N[2026-07-15 12:04:38], ~N[2026-07-15 12:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:38.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406345, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:14:27Z", message: nil, status_log_id: 47191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:38], updated_at: ~N[2026-07-15 12:04:38]}} [2026-07-15 12:04:38.718] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=54.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:04:38.740] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 11:54:58]}, %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-15 12:04:38.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=25.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:04:38.752] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.7ms idle=31.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43754, 43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:04:50.203] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:04:50.203] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"-3587939-07-24T15:34:56Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-3587939-07-24T15:34:56Z","message":"Device Connected"}]} [2026-07-15 12:04:50.204] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3587939-07-24T15:34:56Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "-3587939-07-24T15:34:56Z"} [2026-07-15 12:04:50.205] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:04:50.207] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.9ms idle=777.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:04:50.208] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:04:50.230] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=326.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:04:50], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:04:50.231] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=23.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:04:50.258] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:04:50], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:04:50.286] [DEBUG] QUERY OK db=27.3ms idle=27.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "-3587939-07-24T15:34:56Z", ~N[2026-07-15 12:04:50], ~N[2026-07-15 12:04:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:04:50.287] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47192, oid: "org-id-placeholder", upload_time: "-3587939-07-24T15:34:56Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:50], updated_at: ~N[2026-07-15 12:04:50]} [2026-07-15 12:04:50.287] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3587939-07-24T15:34:56Z", "value" => "online"} [2026-07-15 12:04:50.315] [DEBUG] QUERY OK db=28.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-3587939-07-24T15:34:56Z", "online", "status", 47192, ~N[2026-07-15 12:04:50], ~N[2026-07-15 12:04:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:04:50.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406346, itemkey: "status", value: "online", timestamp: "-3587939-07-24T15:34:56Z", message: "Device Connected", status_log_id: 47192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:04:50], updated_at: ~N[2026-07-15 12:04:50]}} [2026-07-15 12:04:50.316] [INFO ] Setting terminal 61250424798001 status to 'online' from status itemkey [2026-07-15 12:04:50.318] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:04:50.324] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=36.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:04:50.337] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:04:50.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=22.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:04:50.351] [DEBUG] QUERY OK source="tms_terminal_status_items" db=4.0ms queue=1.5ms idle=21.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:05:08.154] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:05:08.154] [INFO ] Incoming JSON payload: {"oid":"759ba990-075f-4e88-90d4-7c7f6c2865f2","sn":"98250623730001","uploadTime":"2026-07-15T03:14:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:14:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:05:08.159] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "759ba990-075f-4e88-90d4-7c7f6c2865f2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:14:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:14:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:14:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:14:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:14:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:14:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:14:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:14:57Z", "vendor" => "morefun"} [2026-07-15 12:05:08.159] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:05:08.160] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:05:08.161] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:05:08.164] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1222.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-15 12:05:08.165] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=220.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-15 12:05:08.165] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:05:08.167] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:05:08.167] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:05:08.202] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:05:08], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:05:08.202] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:05:08.203] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=35.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:05:08.239] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms queue=0.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:05:08], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:05:08.270] [DEBUG] QUERY OK db=30.5ms idle=35.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "759ba990-075f-4e88-90d4-7c7f6c2865f2", "2026-07-15T03:14:57Z", ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:05:08.271] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47193, oid: "759ba990-075f-4e88-90d4-7c7f6c2865f2", upload_time: "2026-07-15T03:14:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]} [2026-07-15 12:05:08.272] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:14:57Z", "value" => "morefun"} [2026-07-15 12:05:08.315] [DEBUG] QUERY OK db=41.7ms queue=1.1ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "morefun", "vendor", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406347, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.315] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:14:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:05:08.339] [DEBUG] QUERY OK db=23.7ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "kiosk_launcher", "model", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406348, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.342] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:14:57Z", "value" => "1.0"} [2026-07-15 12:05:08.368] [DEBUG] QUERY OK db=26.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "1.0", "app_version", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406349, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.369] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:14:57Z", "value" => "13"} [2026-07-15 12:05:08.422] [DEBUG] QUERY OK db=52.8ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "13", "android_version", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406350, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.422] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "934"} [2026-07-15 12:05:08.457] [DEBUG] QUERY OK db=33.9ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "934", "ram_free_mb", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406351, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.458] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:14:57Z", "value" => "WIFI"} [2026-07-15 12:05:08.490] [DEBUG] QUERY OK db=31.2ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "WIFI", "network_type", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406352, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.490] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:14:57Z", "value" => "true"} [2026-07-15 12:05:08.524] [DEBUG] QUERY OK db=33.9ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "true", "kiosk_active", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406353, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.525] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:14:57Z", "value" => ""} [2026-07-15 12:05:08.545] [DEBUG] QUERY OK db=20.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:14:57Z", "sim_operator", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406354, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.547] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"} [2026-07-15 12:05:08.584] [DEBUG] QUERY OK db=36.0ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "UNKNOWN", "sim_number", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406355, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.584] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"} [2026-07-15 12:05:08.618] [DEBUG] QUERY OK db=31.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "UNKNOWN", "sim_iccid", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406356, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.618] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"} [2026-07-15 12:05:08.637] [DEBUG] QUERY OK db=18.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "UNKNOWN", "sim_imsi", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406357, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.639] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"} [2026-07-15 12:05:08.685] [DEBUG] QUERY OK db=45.1ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "UNKNOWN", "sim_iccid2", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406358, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.685] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:14:57Z", "value" => "UNKNOWN"} [2026-07-15 12:05:08.719] [DEBUG] QUERY OK db=30.9ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "UNKNOWN", "sim_imsi2", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406359, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.719] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "13"} [2026-07-15 12:05:08.756] [DEBUG] QUERY OK db=36.3ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "13", "data_usage_mb", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406360, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.756] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:14:57Z", "value" => "0"} [2026-07-15 12:05:08.791] [DEBUG] QUERY OK db=34.5ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14:57Z", "0", "mobile_data_mb", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406361, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.793] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:05:08.843] [DEBUG] QUERY OK db=49.4ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:14: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47193, ~N[2026-07-15 12:05:08], ~N[2026-07-15 12:05:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:08.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406362, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:14:57Z", message: nil, status_log_id: 47193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:08], updated_at: ~N[2026-07-15 12:05:08]}} [2026-07-15 12:05:08.847] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=53.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:05:08.859] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:05:08.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=20.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:05:08.874] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.3ms queue=0.3ms idle=25.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:05:38.593] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:05:38.593] [INFO ] Incoming JSON payload: {"oid":"5ad3e48a-96b4-4430-a662-818daddb2f98","sn":"98250623730001","uploadTime":"2026-07-15T03:15:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:15:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:05:38.594] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5ad3e48a-96b4-4430-a662-818daddb2f98", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:15:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:15:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:15:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:15:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:15:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:15:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:15:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:15:28Z", "vendor" => "morefun"} [2026-07-15 12:05:38.594] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:05:38.594] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:05:38.594] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:05:38.595] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=565.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-15 12:05:38.598] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=161.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-15 12:05:38.598] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:05:38.601] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.8ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:05:38.601] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:05:38.634] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:05:38], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:05:38.634] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:05:38.637] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:05:38.682] [DEBUG] QUERY OK source="tms_terminals" db=44.3ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:05:38], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:05:38.715] [DEBUG] QUERY OK db=30.3ms queue=0.2ms idle=46.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "5ad3e48a-96b4-4430-a662-818daddb2f98", "2026-07-15T03:15:28Z", ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:05:38.719] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47194, oid: "5ad3e48a-96b4-4430-a662-818daddb2f98", upload_time: "2026-07-15T03:15:28Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]} [2026-07-15 12:05:38.719] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:15:28Z", "value" => "morefun"} [2026-07-15 12:05:38.744] [DEBUG] QUERY OK db=24.5ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "morefun", "vendor", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406363, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.744] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:15:28Z", "value" => "kiosk_launcher"} [2026-07-15 12:05:38.803] [DEBUG] QUERY OK db=57.0ms queue=0.9ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "kiosk_launcher", "model", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406364, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.804] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:15:28Z", "value" => "1.0"} [2026-07-15 12:05:38.828] [DEBUG] QUERY OK db=24.1ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "1.0", "app_version", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406365, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.829] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:15:28Z", "value" => "13"} [2026-07-15 12:05:38.869] [DEBUG] QUERY OK db=39.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "13", "android_version", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406366, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.870] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "933"} [2026-07-15 12:05:38.894] [DEBUG] QUERY OK db=23.4ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "933", "ram_free_mb", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406367, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.894] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:15:28Z", "value" => "WIFI"} [2026-07-15 12:05:38.929] [DEBUG] QUERY OK db=34.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "WIFI", "network_type", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406368, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.929] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:15:28Z", "value" => "true"} [2026-07-15 12:05:38.950] [DEBUG] QUERY OK db=20.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "true", "kiosk_active", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:38.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406369, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:38.950] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:15:28Z", "value" => ""} [2026-07-15 12:05:39.005] [DEBUG] QUERY OK db=53.8ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:15:28Z", "sim_operator", 47194, ~N[2026-07-15 12:05:38], ~N[2026-07-15 12:05:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406370, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:38], updated_at: ~N[2026-07-15 12:05:38]}} [2026-07-15 12:05:39.005] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"} [2026-07-15 12:05:39.039] [DEBUG] QUERY OK db=33.1ms queue=0.6ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "UNKNOWN", "sim_number", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406371, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.040] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"} [2026-07-15 12:05:39.077] [DEBUG] QUERY OK db=36.5ms idle=10.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "UNKNOWN", "sim_iccid", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406372, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.078] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"} [2026-07-15 12:05:39.100] [DEBUG] QUERY OK db=21.9ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "UNKNOWN", "sim_imsi", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406373, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.100] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"} [2026-07-15 12:05:39.143] [DEBUG] QUERY OK db=42.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "UNKNOWN", "sim_iccid2", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406374, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.144] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:15:28Z", "value" => "UNKNOWN"} [2026-07-15 12:05:39.195] [DEBUG] QUERY OK db=50.7ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "UNKNOWN", "sim_imsi2", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406375, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.196] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "13"} [2026-07-15 12:05:39.216] [DEBUG] QUERY OK db=19.1ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "13", "data_usage_mb", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406376, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.217] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:15:28Z", "value" => "0"} [2026-07-15 12:05:39.247] [DEBUG] QUERY OK db=29.7ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:28Z", "0", "mobile_data_mb", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406377, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.248] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:05:39.314] [DEBUG] QUERY OK db=64.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47194, ~N[2026-07-15 12:05:39], ~N[2026-07-15 12:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:05:39.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406378, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:15:28Z", message: nil, status_log_id: 47194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:05:39], updated_at: ~N[2026-07-15 12:05:39]}} [2026-07-15 12:05:39.317] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=68.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-15 12:05:39.322] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:05:39.331] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms queue=0.1ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:05:39.333] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.4ms idle=14.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:06:08.850] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:06:08.850] [INFO ] Incoming JSON payload: {"oid":"fa88efb1-38f1-4fde-8123-3bc79c139965","sn":"98250623730001","uploadTime":"2026-07-15T03:15:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"data_usage_mb","value":"13","timestamp":"2026-07-15T03:15:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:06:08.852] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fa88efb1-38f1-4fde-8123-3bc79c139965", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:15:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:15:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:15:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:15:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:15:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:15:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:15:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "13"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:15:58Z", "vendor" => "morefun"} [2026-07-15 12:06:08.852] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:06:08.852] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:06:08.852] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:06:08.854] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=717.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-15 12:06:08.854] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=417.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-15 12:06:08.855] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:06:08.856] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:06:08.856] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:06:08.913] [DEBUG] QUERY OK source="tms_terminals" db=56.4ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:06:08], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:06:08.913] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:06:08.914] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=57.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:06:08.968] [DEBUG] QUERY OK source="tms_terminals" db=53.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:06:08], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:06:09.025] [DEBUG] QUERY OK db=56.2ms idle=54.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "fa88efb1-38f1-4fde-8123-3bc79c139965", "2026-07-15T03:15:58Z", ~N[2026-07-15 12:06:08], ~N[2026-07-15 12:06:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:06:09.025] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47195, oid: "fa88efb1-38f1-4fde-8123-3bc79c139965", upload_time: "2026-07-15T03:15:58Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:08], updated_at: ~N[2026-07-15 12:06:08]} [2026-07-15 12:06:09.025] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:15:58Z", "value" => "morefun"} [2026-07-15 12:06:09.100] [DEBUG] QUERY OK db=74.5ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "morefun", "vendor", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406379, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.101] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:15:58Z", "value" => "kiosk_launcher"} [2026-07-15 12:06:09.148] [DEBUG] QUERY OK db=46.9ms idle=76.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "kiosk_launcher", "model", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406380, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.149] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:15:58Z", "value" => "1.0"} [2026-07-15 12:06:09.205] [DEBUG] QUERY OK db=55.3ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "1.0", "app_version", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406381, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.205] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:15:58Z", "value" => "13"} [2026-07-15 12:06:09.256] [DEBUG] QUERY OK db=50.6ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "13", "android_version", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406382, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.256] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "931"} [2026-07-15 12:06:09.312] [DEBUG] QUERY OK db=54.6ms queue=0.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "931", "ram_free_mb", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406383, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.312] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:15:58Z", "value" => "WIFI"} [2026-07-15 12:06:09.380] [DEBUG] QUERY OK db=67.0ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "WIFI", "network_type", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406384, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.380] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:15:58Z", "value" => "true"} [2026-07-15 12:06:09.422] [DEBUG] QUERY OK db=41.8ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "true", "kiosk_active", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406385, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.423] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:15:58Z", "value" => ""} [2026-07-15 12:06:09.485] [DEBUG] QUERY OK db=62.1ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:15:58Z", "sim_operator", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406386, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.486] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"} [2026-07-15 12:06:09.546] [DEBUG] QUERY OK db=59.4ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "UNKNOWN", "sim_number", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406387, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.546] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"} [2026-07-15 12:06:09.595] [DEBUG] QUERY OK db=48.8ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "UNKNOWN", "sim_iccid", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406388, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.596] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"} [2026-07-15 12:06:09.672] [DEBUG] QUERY OK db=76.4ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "UNKNOWN", "sim_imsi", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406389, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"} [2026-07-15 12:06:09.729] [DEBUG] QUERY OK db=56.2ms idle=77.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "UNKNOWN", "sim_iccid2", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406390, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.730] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:15:58Z", "value" => "UNKNOWN"} [2026-07-15 12:06:09.756] [DEBUG] QUERY OK db=26.1ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "UNKNOWN", "sim_imsi2", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406391, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.757] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "13"} [2026-07-15 12:06:09.796] [DEBUG] QUERY OK db=38.9ms queue=0.2ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "13", "data_usage_mb", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406392, itemkey: "data_usage_mb", value: "13", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.797] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:15:58Z", "value" => "0"} [2026-07-15 12:06:09.847] [DEBUG] QUERY OK db=49.9ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15:58Z", "0", "mobile_data_mb", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406393, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.848] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:06:09.895] [DEBUG] QUERY OK db=45.3ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:15: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47195, ~N[2026-07-15 12:06:09], ~N[2026-07-15 12:06:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:09.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406394, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:15:58Z", message: nil, status_log_id: 47195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:09], updated_at: ~N[2026-07-15 12:06:09]}} [2026-07-15 12:06:09.898] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.4ms idle=49.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-15 12:06:09.904] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:06:09.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:06:09.912] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.4ms idle=12.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:06:38.776] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:06:38.776] [INFO ] Incoming JSON payload: {"oid":"a77f1b81-23b3-4bcf-8103-16418ce3df4d","sn":"98250623730001","uploadTime":"2026-07-15T03:16:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:16:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:06:38.779] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a77f1b81-23b3-4bcf-8103-16418ce3df4d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:16:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:16:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:16:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:16:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:16:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:16:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:16:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:16:28Z", "vendor" => "morefun"} [2026-07-15 12:06:38.779] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:06:38.779] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:06:38.779] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:06:38.781] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=569.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-15 12:06:38.782] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=345.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-15 12:06:38.783] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:06:38.784] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:06:38.784] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:06:38.854] [DEBUG] QUERY OK source="tms_terminals" db=69.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:06:38], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:06:38.854] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:06:38.855] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=70.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:06:38.943] [DEBUG] QUERY OK source="tms_terminals" db=87.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:06:38], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:06:38.984] [DEBUG] QUERY OK db=40.5ms idle=88.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "a77f1b81-23b3-4bcf-8103-16418ce3df4d", "2026-07-15T03:16:28Z", ~N[2026-07-15 12:06:38], ~N[2026-07-15 12:06:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:06:38.985] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47196, oid: "a77f1b81-23b3-4bcf-8103-16418ce3df4d", upload_time: "2026-07-15T03:16:28Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:38], updated_at: ~N[2026-07-15 12:06:38]} [2026-07-15 12:06:38.985] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:16:28Z", "value" => "morefun"} [2026-07-15 12:06:39.071] [DEBUG] QUERY OK db=85.9ms queue=0.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "morefun", "vendor", 47196, ~N[2026-07-15 12:06:38], ~N[2026-07-15 12:06:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406395, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:38], updated_at: ~N[2026-07-15 12:06:38]}} [2026-07-15 12:06:39.073] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:16:28Z", "value" => "kiosk_launcher"} [2026-07-15 12:06:39.108] [DEBUG] QUERY OK db=35.5ms idle=88.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "kiosk_launcher", "model", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406396, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.110] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:16:28Z", "value" => "1.0"} [2026-07-15 12:06:39.141] [DEBUG] QUERY OK db=30.7ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "1.0", "app_version", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406397, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.142] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:16:28Z", "value" => "13"} [2026-07-15 12:06:39.165] [DEBUG] QUERY OK db=23.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "13", "android_version", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406398, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.166] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "933"} [2026-07-15 12:06:39.197] [DEBUG] QUERY OK db=30.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "933", "ram_free_mb", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406399, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.197] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:16:28Z", "value" => "WIFI"} [2026-07-15 12:06:39.221] [DEBUG] QUERY OK db=23.0ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "WIFI", "network_type", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406400, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.223] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:16:28Z", "value" => "true"} [2026-07-15 12:06:39.257] [DEBUG] QUERY OK db=32.1ms idle=10.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "true", "kiosk_active", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406401, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.257] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:16:28Z", "value" => ""} [2026-07-15 12:06:39.294] [DEBUG] QUERY OK db=36.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:16:28Z", "sim_operator", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406402, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.296] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"} [2026-07-15 12:06:39.329] [DEBUG] QUERY OK db=32.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "UNKNOWN", "sim_number", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406403, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.329] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"} [2026-07-15 12:06:39.352] [DEBUG] QUERY OK db=22.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "UNKNOWN", "sim_iccid", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406404, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.353] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"} [2026-07-15 12:06:39.385] [DEBUG] QUERY OK db=32.5ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "UNKNOWN", "sim_imsi", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406405, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.387] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"} [2026-07-15 12:06:39.423] [DEBUG] QUERY OK db=36.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-15T03:16:28Z", "UNKNOWN", "sim_iccid2", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406406, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:16:28Z", "value" => "UNKNOWN"} [2026-07-15 12:06:39.449] [DEBUG] QUERY OK db=23.6ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "UNKNOWN", "sim_imsi2", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406407, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.450] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "14"} [2026-07-15 12:06:39.482] [DEBUG] QUERY OK db=31.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "14", "data_usage_mb", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406408, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.482] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:16:28Z", "value" => "0"} [2026-07-15 12:06:39.510] [DEBUG] QUERY OK db=27.3ms queue=0.5ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:28Z", "0", "mobile_data_mb", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406409, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.512] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:06:39.547] [DEBUG] QUERY OK db=32.8ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47196, ~N[2026-07-15 12:06:39], ~N[2026-07-15 12:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:06:39.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406410, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:16:28Z", message: nil, status_log_id: 47196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:06:39], updated_at: ~N[2026-07-15 12:06:39]}} [2026-07-15 12:06:39.550] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:06:39.557] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:06:39.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms idle=12.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:06:39.570] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.7ms idle=17.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:08.985] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:07:08.985] [INFO ] Incoming JSON payload: {"oid":"8bedbb88-9abb-462c-b5c8-d7ba035691c1","sn":"98250623730001","uploadTime":"2026-07-15T03:16:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:16:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:07:08.987] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8bedbb88-9abb-462c-b5c8-d7ba035691c1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:16:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:16:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:16:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:16:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:16:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:16:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:16:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:16:58Z", "vendor" => "morefun"} [2026-07-15 12:07:08.987] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:07:08.987] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:07:08.987] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:07:08.988] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=692.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-15 12:07:08.988] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=546.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-15 12:07:08.989] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:07:08.990] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:07:08.990] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:07:09.031] [DEBUG] QUERY OK source="tms_terminals" db=40.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:07:08], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:07:09.031] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:07:09.032] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=41.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:07:09.165] [DEBUG] QUERY OK source="tms_terminals" db=132.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:07:09], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:07:09.216] [DEBUG] QUERY OK db=50.1ms idle=133.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "8bedbb88-9abb-462c-b5c8-d7ba035691c1", "2026-07-15T03:16:58Z", ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:07:09.216] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47197, oid: "8bedbb88-9abb-462c-b5c8-d7ba035691c1", upload_time: "2026-07-15T03:16:58Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]} [2026-07-15 12:07:09.216] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:16:58Z", "value" => "morefun"} [2026-07-15 12:07:09.239] [DEBUG] QUERY OK db=22.5ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "morefun", "vendor", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406411, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.240] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:16:58Z", "value" => "kiosk_launcher"} [2026-07-15 12:07:09.263] [DEBUG] QUERY OK db=23.0ms 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-15T03:16:58Z", "kiosk_launcher", "model", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406412, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.264] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:16:58Z", "value" => "1.0"} [2026-07-15 12:07:09.314] [DEBUG] QUERY OK db=49.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "1.0", "app_version", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406413, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.314] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:16:58Z", "value" => "13"} [2026-07-15 12:07:09.341] [DEBUG] QUERY OK db=26.5ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "13", "android_version", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406414, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.341] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "931"} [2026-07-15 12:07:09.358] [DEBUG] QUERY OK db=16.7ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "931", "ram_free_mb", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406415, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.359] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:16:58Z", "value" => "WIFI"} [2026-07-15 12:07:09.412] [DEBUG] QUERY OK db=53.1ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "WIFI", "network_type", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406416, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.413] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:16:58Z", "value" => "true"} [2026-07-15 12:07:09.437] [DEBUG] QUERY OK db=23.9ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "true", "kiosk_active", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406417, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.438] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:16:58Z", "value" => ""} [2026-07-15 12:07:09.463] [DEBUG] QUERY OK db=24.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:16:58Z", "sim_operator", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406418, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.463] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"} [2026-07-15 12:07:09.509] [DEBUG] QUERY OK db=45.1ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "UNKNOWN", "sim_number", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406419, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"} [2026-07-15 12:07:09.533] [DEBUG] QUERY OK db=22.8ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "UNKNOWN", "sim_iccid", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406420, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.533] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"} [2026-07-15 12:07:09.568] [DEBUG] QUERY OK db=34.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "UNKNOWN", "sim_imsi", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406421, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.568] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"} [2026-07-15 12:07:09.618] [DEBUG] QUERY OK db=49.3ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "UNKNOWN", "sim_iccid2", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406422, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.619] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:16:58Z", "value" => "UNKNOWN"} [2026-07-15 12:07:09.648] [DEBUG] QUERY OK db=28.4ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "UNKNOWN", "sim_imsi2", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406423, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.648] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "14"} [2026-07-15 12:07:09.692] [DEBUG] QUERY OK db=43.4ms queue=0.1ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "14", "data_usage_mb", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406424, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.693] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:16:58Z", "value" => "0"} [2026-07-15 12:07:09.724] [DEBUG] QUERY OK db=30.8ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16:58Z", "0", "mobile_data_mb", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406425, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.726] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:07:09.757] [DEBUG] QUERY OK db=30.2ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:16: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47197, ~N[2026-07-15 12:07:09], ~N[2026-07-15 12:07:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:09.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406426, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:16:58Z", message: nil, status_log_id: 47197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:09], updated_at: ~N[2026-07-15 12:07:09]}} [2026-07-15 12:07:09.759] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=34.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:07:09.764] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:07:09.769] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:09.771] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.4ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:27.291] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:07:27.291] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:07:26Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:07:26Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:07:26Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:07:26Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:07:26Z","message":""}]} [2026-07-15 12:07:27.292] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:07:26Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:07:26Z"} [2026-07-15 12:07:27.292] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:07:27.293] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1850.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-15 12:07:27.293] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:07:27.311] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=951.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:07:27], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:07:27.312] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=18.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:07:27.343] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:07:27], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:07:27.382] [DEBUG] QUERY OK db=38.4ms queue=0.2ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:07:26Z", ~N[2026-07-15 12:07:27], ~N[2026-07-15 12:07:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:07:27.383] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47198, oid: "org-id-placeholder", upload_time: "2026-07-15T12:07:26Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:27], updated_at: ~N[2026-07-15 12:07:27]} [2026-07-15 12:07:27.383] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => 28} [2026-07-15 12:07:27.450] [DEBUG] QUERY OK db=66.8ms 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-15T12:07:26Z", "28", "battery", 47198, ~N[2026-07-15 12:07:27], ~N[2026-07-15 12:07:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:27.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406427, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:07:26Z", message: nil, status_log_id: 47198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:27], updated_at: ~N[2026-07-15 12:07:27]}} [2026-07-15 12:07:27.451] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:07:26Z", "value" => 50} [2026-07-15 12:07:27.463] [DEBUG] QUERY OK db=11.6ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:07:26Z", "50", "memory", 47198, ~N[2026-07-15 12:07:27], ~N[2026-07-15 12:07:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:27.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406428, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:07:26Z", message: "Normal", status_log_id: 47198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:27], updated_at: ~N[2026-07-15 12:07:27]}} [2026-07-15 12:07:27.463] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => 50} [2026-07-15 12:07:27.507] [DEBUG] QUERY OK db=42.7ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:07:26Z", "50", "cpu", 47198, ~N[2026-07-15 12:07:27], ~N[2026-07-15 12:07:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:27.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406429, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:07:26Z", message: nil, status_log_id: 47198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:27], updated_at: ~N[2026-07-15 12:07:27]}} [2026-07-15 12:07:27.507] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:07:26Z", "value" => "online"} [2026-07-15 12:07:27.546] [DEBUG] QUERY OK db=37.9ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:07:26Z", "online", "network", 47198, ~N[2026-07-15 12:07:27], ~N[2026-07-15 12:07:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:27.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406430, itemkey: "network", value: "online", timestamp: "2026-07-15T12:07:26Z", message: nil, status_log_id: 47198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:27], updated_at: ~N[2026-07-15 12:07:27]}} [2026-07-15 12:07:27.546] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:07:27.546] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:07:27.550] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=41.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-15 12:07:27.553] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:07:27.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=8.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:27.560] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:38.996] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:07:38.996] [INFO ] Incoming JSON payload: {"oid":"55eb27c6-e1cd-4b3c-9c5a-27dd14160319","sn":"98250623730001","uploadTime":"2026-07-15T03:17:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:17:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:07:39.001] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "55eb27c6-e1cd-4b3c-9c5a-27dd14160319", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:17:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:17:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:17:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:17:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:17:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:17:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:17:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:17:29Z", "vendor" => "morefun"} [2026-07-15 12:07:39.005] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:07:39.005] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:07:39.006] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:07:39.011] [DEBUG] QUERY OK source="parameter_templates" db=4.9ms idle=883.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-15 12:07:39.013] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=630.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-15 12:07:39.014] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:07:39.015] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:07:39.015] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:07:39.053] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:07:39], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:07:39.054] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:07:39.056] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=38.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:07:39.080] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:07:39], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:07:39.105] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "55eb27c6-e1cd-4b3c-9c5a-27dd14160319", "2026-07-15T03:17:29Z", ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:07:39.106] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47199, oid: "55eb27c6-e1cd-4b3c-9c5a-27dd14160319", upload_time: "2026-07-15T03:17:29Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]} [2026-07-15 12:07:39.106] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:17:29Z", "value" => "morefun"} [2026-07-15 12:07:39.145] [DEBUG] QUERY OK db=38.0ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "morefun", "vendor", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406431, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.145] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:17:29Z", "value" => "kiosk_launcher"} [2026-07-15 12:07:39.168] [DEBUG] QUERY OK db=22.5ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "kiosk_launcher", "model", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406432, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.169] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:17:29Z", "value" => "1.0"} [2026-07-15 12:07:39.194] [DEBUG] QUERY OK db=24.5ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "1.0", "app_version", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406433, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.195] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:17:29Z", "value" => "13"} [2026-07-15 12:07:39.241] [DEBUG] QUERY OK db=44.9ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "13", "android_version", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406434, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.242] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "930"} [2026-07-15 12:07:39.271] [DEBUG] QUERY OK db=29.3ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "930", "ram_free_mb", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406435, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.272] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:17:29Z", "value" => "WIFI"} [2026-07-15 12:07:39.290] [DEBUG] QUERY OK db=17.5ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "WIFI", "network_type", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406436, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.290] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:17:29Z", "value" => "true"} [2026-07-15 12:07:39.328] [DEBUG] QUERY OK db=37.5ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "true", "kiosk_active", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406437, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.329] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:17:29Z", "value" => ""} [2026-07-15 12:07:39.353] [DEBUG] QUERY OK db=23.2ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:17:29Z", "sim_operator", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406438, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.353] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"} [2026-07-15 12:07:39.376] [DEBUG] QUERY OK db=23.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "UNKNOWN", "sim_number", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406439, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.377] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"} [2026-07-15 12:07:39.410] [DEBUG] QUERY OK db=32.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "UNKNOWN", "sim_iccid", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406440, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"} [2026-07-15 12:07:39.447] [DEBUG] QUERY OK db=34.6ms queue=1.8ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "UNKNOWN", "sim_imsi", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406441, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.448] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"} [2026-07-15 12:07:39.472] [DEBUG] QUERY OK db=24.0ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "UNKNOWN", "sim_iccid2", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406442, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.473] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:17:29Z", "value" => "UNKNOWN"} [2026-07-15 12:07:39.520] [DEBUG] QUERY OK db=47.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "UNKNOWN", "sim_imsi2", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406443, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.522] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "14"} [2026-07-15 12:07:39.555] [DEBUG] QUERY OK db=31.9ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "14", "data_usage_mb", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406444, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.555] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:17:29Z", "value" => "0"} [2026-07-15 12:07:39.573] [DEBUG] QUERY OK db=17.2ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:29Z", "0", "mobile_data_mb", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406445, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.575] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:07:39.623] [DEBUG] QUERY OK db=47.1ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47199, ~N[2026-07-15 12:07:39], ~N[2026-07-15 12:07:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:07:39.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406446, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:17:29Z", message: nil, status_log_id: 47199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:07:39], updated_at: ~N[2026-07-15 12:07:39]}} [2026-07-15 12:07:39.625] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=51.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-15 12:07:39.628] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:07:39.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.2ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:07:39.637] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.4ms idle=10.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:08:09.196] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:08:09.196] [INFO ] Incoming JSON payload: {"oid":"56fa536e-e1d1-4e79-b0ff-1f0da8f25c39","sn":"98250623730001","uploadTime":"2026-07-15T03:17:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"ram_free_mb","value":"928","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:17:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:08:09.198] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "56fa536e-e1d1-4e79-b0ff-1f0da8f25c39", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:17:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:17:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:17:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:17:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "928"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:17:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:17:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:17:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:17:59Z", "vendor" => "morefun"} [2026-07-15 12:08:09.198] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:08:09.198] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:08:09.199] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:08:09.199] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1734.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-15 12:08:09.201] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=732.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-15 12:08:09.201] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:08:09.202] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:08:09.202] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:08:09.241] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms queue=1.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:08:09], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:08:09.241] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:08:09.242] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=39.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:08:09.275] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms queue=0.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:08:09], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:08:09.332] [DEBUG] QUERY OK db=56.1ms idle=33.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "56fa536e-e1d1-4e79-b0ff-1f0da8f25c39", "2026-07-15T03:17:59Z", ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:08:09.332] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47200, oid: "56fa536e-e1d1-4e79-b0ff-1f0da8f25c39", upload_time: "2026-07-15T03:17:59Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]} [2026-07-15 12:08:09.332] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:17:59Z", "value" => "morefun"} [2026-07-15 12:08:09.371] [DEBUG] QUERY OK db=38.0ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "morefun", "vendor", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406447, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.371] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:17:59Z", "value" => "kiosk_launcher"} [2026-07-15 12:08:09.427] [DEBUG] QUERY OK db=55.3ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "kiosk_launcher", "model", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406448, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.427] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:17:59Z", "value" => "1.0"} [2026-07-15 12:08:09.485] [DEBUG] QUERY OK db=57.6ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "1.0", "app_version", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406449, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.486] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:17:59Z", "value" => "13"} [2026-07-15 12:08:09.532] [DEBUG] QUERY OK db=45.9ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "13", "android_version", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406450, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.533] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "928"} [2026-07-15 12:08:09.566] [DEBUG] QUERY OK db=33.4ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "928", "ram_free_mb", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406451, itemkey: "ram_free_mb", value: "928", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.567] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:17:59Z", "value" => "WIFI"} [2026-07-15 12:08:09.623] [DEBUG] QUERY OK db=55.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "WIFI", "network_type", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406452, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.624] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:17:59Z", "value" => "true"} [2026-07-15 12:08:09.655] [DEBUG] QUERY OK db=30.7ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "true", "kiosk_active", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406453, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.656] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:17:59Z", "value" => ""} [2026-07-15 12:08:09.686] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:17:59Z", "sim_operator", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406454, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.686] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"} [2026-07-15 12:08:09.723] [DEBUG] QUERY OK db=36.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "UNKNOWN", "sim_number", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406455, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.723] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"} [2026-07-15 12:08:09.747] [DEBUG] QUERY OK db=23.0ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "UNKNOWN", "sim_iccid", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406456, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.747] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"} [2026-07-15 12:08:09.771] [DEBUG] QUERY OK db=23.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "UNKNOWN", "sim_imsi", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406457, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.771] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"} [2026-07-15 12:08:09.820] [DEBUG] QUERY OK db=48.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "UNKNOWN", "sim_iccid2", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406458, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.821] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:17:59Z", "value" => "UNKNOWN"} [2026-07-15 12:08:09.842] [DEBUG] QUERY OK db=20.7ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "UNKNOWN", "sim_imsi2", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406459, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.843] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "14"} [2026-07-15 12:08:09.883] [DEBUG] QUERY OK db=39.7ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "14", "data_usage_mb", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406460, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.883] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:17:59Z", "value" => "0"} [2026-07-15 12:08:09.907] [DEBUG] QUERY OK db=22.8ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17:59Z", "0", "mobile_data_mb", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406461, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.908] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:08:09.942] [DEBUG] QUERY OK db=33.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:17: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47200, ~N[2026-07-15 12:08:09], ~N[2026-07-15 12:08:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:08:09.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406462, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:17:59Z", message: nil, status_log_id: 47200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:08:09], updated_at: ~N[2026-07-15 12:08:09]}} [2026-07-15 12:08:09.944] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=36.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-15 12:08:09.949] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:08:09.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:08:09.957] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.8ms idle=10.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:08:51.396] [INFO ] Running offline device check... [2026-07-15 12:08:51.396] [INFO ] Starting offline device check... [2026-07-15 12:08:51.397] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=952.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-15 12:08:51.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=828.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:08:51.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.411] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.414] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.416] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.417] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.457] [DEBUG] QUERY OK source="tms_terminals" db=19.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:08:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:08:51.457] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:08:51.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=20.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:08:51.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.9ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=14.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.478] [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-15 12:08:51.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.514] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=0.1ms idle=12.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:08:51], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:08:51.514] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:08:51.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=24.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.525] [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-15 12:08:51.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.531] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.537] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:08:51.543] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:08:51.543] [INFO ] Offline device check completed successfully [2026-07-15 12:09:56.894] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 12:09:56.894] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T20:13:04Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T20:13:04Z","value":"61"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T20:13:04Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T20:13:04Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T20:13:04Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T20:13:04Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T20:13:04Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T20:13:04Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T20:13:04Z","vendor":"MoreFun"} [2026-07-15 12:09:56.895] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T20:13:04Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T20:13:04Z", "value" => "61"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T20:13:04Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T20:13:04Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T20:13:04Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T20:13:04Z", "vendor" => "MoreFun"} [2026-07-15 12:09:56.895] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 12:09:56.895] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 12:09:56.895] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 12:09:56.896] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1127.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 12:09:56.898] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=124.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 12:09:56.901] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=0.2ms idle=3.3ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 12:09:56.904] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=1.5ms idle=3.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 12:09:56.905] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 12:09:56.945] [DEBUG] QUERY OK source="pos_merchant" db=39.3ms idle=1.5ms 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-15 12:09:56.949] [DEBUG] QUERY OK db=3.4ms queue=0.5ms idle=1493.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-15 12:09:56.949] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 12:09:56.950] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=44.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 12:09:56.951] [DEBUG] QUERY OK source="address" db=1.2ms idle=5.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 12:09:56.952] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 12:09:56.953] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 12:09:56.979] [DEBUG] QUERY OK db=24.9ms idle=4.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3734d15605931a61b5d9fee76bccb63fd56ff94d0576a1ce02ab8743b44976ce", 15491, 913, ~U[2026-07-15 12:09:56Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 12:09:56], ~N[2026-07-15 12:09:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 12:09:56.979] [INFO ] AutoPushService: Created push log 33579 for MF919 params.zip [2026-07-15 12:09:56.980] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 15491, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 12:09:56.980] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 12:09:56.980] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 12:09:56.981] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=28.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 12:09:56.985] [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-15 12:09:57.034] [DEBUG] QUERY OK db=48.0ms idle=6.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "bea3187c3860bd95837bd736466bcf055b49c0f3bcb5ad3aa417b73bc34d19fa", 15555, 17947, ~U[2026-07-15 12:09:56Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 12:09:56], ~N[2026-07-15 12:09:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 12:09:57.034] [INFO ] AutoPushService: Created push log 33580 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 12:09:57.034] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 15555, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 12:09:57.034] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 12:09:57.035] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 12:09:57.036] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=53.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 12:09:57.036] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 12:09:57.037] [DEBUG] QUERY OK source="tms_terminals" db=0.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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 12:09:57.037] [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-15 12:09:57.039] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 12:09:57.039] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 12:09:57.040] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 12:09:57.042] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=5.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 12:09:57.044] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 12:09:57.044] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 12:09:57.045] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=7.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-15 12:09:57.045] [INFO ] Terminal updated: 98251226730001 [2026-07-15 12:09:57.096] [DEBUG] QUERY OK source="tms_terminals" db=50.6ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:09:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:09:57.098] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.3ms idle=52.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 12:09:57.099] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.2ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 12:09:57.100] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 12:09:57.100] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 12:09:57.144] [DEBUG] QUERY OK source="parameter_push_logs" db=43.5ms idle=1.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:39:57]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 12:09:57.144] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 12:09:57.144] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 12:09:57.145] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=44.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 12:09:57.146] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 12:09:57.147] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 12:09:57.147] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:09:57.197] [DEBUG] QUERY OK source="tms_terminals" db=47.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:09:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:09:57.275] [DEBUG] QUERY OK db=77.9ms queue=0.1ms idle=49.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T20:13:04Z", ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:09:57.276] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47201, oid: "organization_id", upload_time: "2026-07-15T20:13:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]} [2026-07-15 12:09:57.276] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T20:13:04Z", "value" => "online"} [2026-07-15 12:09:57.335] [DEBUG] QUERY OK db=58.6ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T20:13:04Z", "online", "status", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406463, itemkey: "status", value: "online", timestamp: "2026-07-15T20:13:04Z", message: "Terminal status update", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.336] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 12:09:57.336] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:09:57.337] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T20:13:04Z", "value" => "61"} [2026-07-15 12:09:57.415] [DEBUG] QUERY OK db=76.9ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T20:13:04Z", "61", "battery", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406464, itemkey: "battery", value: "61", timestamp: "2026-07-15T20:13:04Z", message: "Battery level", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.415] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T20:13:04Z", "value" => "online"} [2026-07-15 12:09:57.450] [DEBUG] QUERY OK db=32.4ms queue=0.1ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T20:13:04Z", "online", "network", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406465, itemkey: "network", value: "online", timestamp: "2026-07-15T20:13:04Z", message: "Network connectivity", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.450] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 12:09:57.450] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:09:57.450] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T20:13:04Z", "value" => "0"} [2026-07-15 12:09:57.479] [DEBUG] QUERY OK db=26.7ms queue=1.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T20:13:04Z", "0", "cpu", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406466, itemkey: "cpu", value: "0", timestamp: "2026-07-15T20:13:04Z", message: "CPU usage percentage", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.479] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.0"} [2026-07-15 12:09:57.519] [DEBUG] QUERY OK db=38.4ms queue=1.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T20:13:04Z", "1.0.0", "parameter_config", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406467, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T20:13:04Z", message: "Current parameters version", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.520] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.1"} [2026-07-15 12:09:57.544] [DEBUG] QUERY OK db=23.6ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T20:13:04Z", "1.0.1", "emv_config", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406468, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T20:13:04Z", message: "Current EMV config version", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.545] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T20:13:04Z", "value" => ""} [2026-07-15 12:09:57.622] [DEBUG] QUERY OK db=34.2ms queue=41.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T20:13:04Z", "keys_config", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406469, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T20:13:04Z", message: "Current keys config version", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.622] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T20:13:04Z", "value" => "1.0.0"} [2026-07-15 12:09:57.645] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=78.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T20:13:04Z", "1.0.0", "application", 47201, ~N[2026-07-15 12:09:57], ~N[2026-07-15 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:09:57.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406470, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T20:13:04Z", message: "Current application version", status_log_id: 47201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:09:57], updated_at: ~N[2026-07-15 12:09:57]}} [2026-07-15 12:09:57.646] [WARN ] Unexpected async result [2026-07-15 12:09:57.646] [WARN ] Unexpected async result [2026-07-15 12:09:57.647] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:09:57.653] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:04:50]}, %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-15 12:09:57.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:09:57.661] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.5ms idle=11.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43753, 43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:15.540] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:10:15.540] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"-4342625-06-11T13:21:41Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-4342625-06-11T13:21:41Z","message":"Device Connected"}]} [2026-07-15 12:10:15.540] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4342625-06-11T13:21:41Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "-4342625-06-11T13:21:41Z"} [2026-07-15 12:10:15.540] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:10:15.541] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=717.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:10:15.542] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:10:15.575] [DEBUG] QUERY OK source="tms_terminals" db=33.2ms idle=585.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:10:15], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:10:15.577] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=34.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:10:15.621] [DEBUG] QUERY OK source="tms_terminals" db=43.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:10:15], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:10:15.655] [DEBUG] QUERY OK db=32.2ms queue=0.1ms idle=45.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "-4342625-06-11T13:21:41Z", ~N[2026-07-15 12:10:15], ~N[2026-07-15 12:10:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:10:15.655] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47202, oid: "org-id-placeholder", upload_time: "-4342625-06-11T13:21:41Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:15], updated_at: ~N[2026-07-15 12:10:15]} [2026-07-15 12:10:15.655] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4342625-06-11T13:21:41Z", "value" => "online"} [2026-07-15 12:10:15.693] [DEBUG] QUERY OK db=37.3ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-4342625-06-11T13:21:41Z", "online", "status", 47202, ~N[2026-07-15 12:10:15], ~N[2026-07-15 12:10:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:15.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406471, itemkey: "status", value: "online", timestamp: "-4342625-06-11T13:21:41Z", message: "Device Connected", status_log_id: 47202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:15], updated_at: ~N[2026-07-15 12:10:15]}} [2026-07-15 12:10:15.694] [INFO ] Setting terminal 61250424798001 status to 'online' from status itemkey [2026-07-15 12:10:15.695] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:10:15.699] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=42.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:10:15.704] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:10:15.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:15.713] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.3ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:37.579] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:10:37.579] [INFO ] Incoming JSON payload: {"oid":"69ab6c01-f4fd-49e1-8296-5024c27f7ce8","sn":"98250623730001","uploadTime":"2026-07-15T03:20:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:20:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:20: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:10:37.581] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "69ab6c01-f4fd-49e1-8296-5024c27f7ce8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:20:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:20:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:20:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:20:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:20:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:20:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:20:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:20: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:20:27Z", "vendor" => "morefun"} [2026-07-15 12:10:37.581] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:10:37.581] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:10:37.581] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:10:37.583] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1131.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-15 12:10:37.584] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=700.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-15 12:10:37.584] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:10:37.585] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:10:37.586] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:10:37.611] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms queue=1.8ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:10:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:10:37.611] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:10:37.613] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=26.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:10:37.634] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:10:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:10:37.676] [DEBUG] QUERY OK db=42.3ms idle=20.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "69ab6c01-f4fd-49e1-8296-5024c27f7ce8", "2026-07-15T03:20:27Z", ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:10:37.677] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47203, oid: "69ab6c01-f4fd-49e1-8296-5024c27f7ce8", upload_time: "2026-07-15T03:20:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]} [2026-07-15 12:10:37.677] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:20:27Z", "value" => "morefun"} [2026-07-15 12:10:37.742] [DEBUG] QUERY OK db=22.7ms queue=41.1ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "morefun", "vendor", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406472, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.743] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:20:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:10:37.767] [DEBUG] QUERY OK db=23.3ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "kiosk_launcher", "model", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406473, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.767] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:20:27Z", "value" => "1.0"} [2026-07-15 12:10:37.787] [DEBUG] QUERY OK db=19.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-15T03:20:27Z", "1.0", "app_version", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406474, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.787] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:20:27Z", "value" => "13"} [2026-07-15 12:10:37.837] [DEBUG] QUERY OK db=48.6ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "13", "android_version", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406475, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.837] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "929"} [2026-07-15 12:10:37.861] [DEBUG] QUERY OK db=23.4ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "929", "ram_free_mb", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406476, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.863] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:20:27Z", "value" => "WIFI"} [2026-07-15 12:10:37.894] [DEBUG] QUERY OK db=31.0ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "WIFI", "network_type", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406477, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.895] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:20:27Z", "value" => "true"} [2026-07-15 12:10:37.912] [DEBUG] QUERY OK db=17.3ms idle=10.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "true", "kiosk_active", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406478, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.913] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:20:27Z", "value" => ""} [2026-07-15 12:10:37.947] [DEBUG] QUERY OK db=33.3ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:20:27Z", "sim_operator", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406479, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.947] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"} [2026-07-15 12:10:37.972] [DEBUG] QUERY OK db=24.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "UNKNOWN", "sim_number", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:37.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406480, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:37.972] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"} [2026-07-15 12:10:38.005] [DEBUG] QUERY OK db=33.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "UNKNOWN", "sim_iccid", 47203, ~N[2026-07-15 12:10:37], ~N[2026-07-15 12:10:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406481, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:37], updated_at: ~N[2026-07-15 12:10:37]}} [2026-07-15 12:10:38.006] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"} [2026-07-15 12:10:38.030] [DEBUG] QUERY OK db=23.3ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "UNKNOWN", "sim_imsi", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406482, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.030] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"} [2026-07-15 12:10:38.050] [DEBUG] QUERY OK db=19.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "UNKNOWN", "sim_iccid2", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406483, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.050] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:20:27Z", "value" => "UNKNOWN"} [2026-07-15 12:10:38.104] [DEBUG] QUERY OK db=53.4ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "UNKNOWN", "sim_imsi2", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406484, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.104] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "14"} [2026-07-15 12:10:38.135] [DEBUG] QUERY OK db=30.1ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "14", "data_usage_mb", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406485, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.135] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:20:27Z", "value" => "0"} [2026-07-15 12:10:38.147] [DEBUG] QUERY OK db=11.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20:27Z", "0", "mobile_data_mb", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406486, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.149] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:20: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:10:38.166] [DEBUG] QUERY OK db=16.6ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:20: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47203, ~N[2026-07-15 12:10:38], ~N[2026-07-15 12:10:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:38.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406487, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:20:27Z", message: nil, status_log_id: 47203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:38], updated_at: ~N[2026-07-15 12:10:38]}} [2026-07-15 12:10:38.168] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=19.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:10:38.173] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:10:38.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:38.180] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.3ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:47.136] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 12:10:47.137] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T20:13:54Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T20:13:54Z","value":"61"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T20:13:54Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T20:13:54Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T20:13:54Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T20:13:54Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T20:13:54Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T20:13:54Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T20:13:54Z","vendor":"MoreFun"} [2026-07-15 12:10:47.137] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T20:13:54Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T20:13:54Z", "value" => "61"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T20:13:54Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T20:13:54Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T20:13:54Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T20:13:54Z", "vendor" => "MoreFun"} [2026-07-15 12:10:47.137] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 12:10:47.137] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 12:10:47.137] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 12:10:47.138] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1235.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-15 12:10:47.139] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=234.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-15 12:10:47.139] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=0.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 12:10:47.141] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 12:10:47.142] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=1.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 12:10:47.181] [DEBUG] QUERY OK source="pos_merchant" db=39.5ms idle=0.9ms 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-15 12:10:47.183] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1729.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 ["490603880000000"] [2026-07-15 12:10:47.183] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 12:10:47.184] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=41.7ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 12:10:47.185] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.1ms idle=2.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 12:10:47.185] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 12:10:47.186] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 12:10:47.219] [DEBUG] QUERY OK db=32.2ms queue=0.3ms idle=2.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d1f735c13a2ac6db33d58b80e65d47841f71016a5fb359d87eab4a02934efd0f", 4324, 913, ~U[2026-07-15 12:10:47Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 12:10:47.219] [INFO ] AutoPushService: Created push log 33581 for MF919 params.zip [2026-07-15 12:10:47.219] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 4324, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 12:10:47.220] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 12:10:47.220] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 12:10:47.221] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=35.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 12:10:47.224] [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-15 12:10:47.276] [DEBUG] QUERY OK db=50.8ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3ff0e433aafedd8cc85819f7a288d0d515b9ce5f32a06bb7813ba57377b10b6b", 4388, 17947, ~U[2026-07-15 12:10:47Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 12:10:47.276] [INFO ] AutoPushService: Created push log 33582 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 12:10:47.276] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 4388, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 12:10:47.276] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 12:10:47.277] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 12:10:47.277] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=55.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 12:10:47.278] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 12:10:47.279] [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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 12:10:47.279] [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-15 12:10:47.280] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 12:10:47.280] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 12:10:47.280] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 12:10:47.281] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 12:10:47.281] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 12:10:47.281] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 12:10:47.282] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:10:47.283] [INFO ] Terminal updated: 98251226730001 [2026-07-15 12:10:47.347] [DEBUG] QUERY OK source="tms_terminals" db=63.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:10:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:10:47.348] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=64.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 12:10:47.349] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-15 12:10:47.350] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 12:10:47.350] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 12:10:47.368] [DEBUG] QUERY OK source="parameter_push_logs" db=17.0ms idle=1.6ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 11:40:47]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 12:10:47.368] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 12:10:47.368] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 12:10:47.369] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 12:10:47.370] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 12:10:47.370] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 12:10:47.371] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:10:47.408] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=0.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:10:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:10:47.446] [DEBUG] QUERY OK db=37.0ms idle=37.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T20:13:54Z", ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:10:47.446] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47204, oid: "organization_id", upload_time: "2026-07-15T20:13:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]} [2026-07-15 12:10:47.446] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T20:13:54Z", "value" => "online"} [2026-07-15 12:10:47.489] [DEBUG] QUERY OK db=41.6ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T20:13:54Z", "online", "status", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406488, itemkey: "status", value: "online", timestamp: "2026-07-15T20:13:54Z", message: "Terminal status update", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.489] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 12:10:47.490] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T20:13:54Z", "value" => "61"} [2026-07-15 12:10:47.490] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:10:47.525] [DEBUG] QUERY OK db=35.2ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T20:13:54Z", "61", "battery", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406489, itemkey: "battery", value: "61", timestamp: "2026-07-15T20:13:54Z", message: "Battery level", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.526] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T20:13:54Z", "value" => "online"} [2026-07-15 12:10:47.551] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T20:13:54Z", "online", "network", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406490, itemkey: "network", value: "online", timestamp: "2026-07-15T20:13:54Z", message: "Network connectivity", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.551] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 12:10:47.551] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:10:47.551] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T20:13:54Z", "value" => "0"} [2026-07-15 12:10:47.586] [DEBUG] QUERY OK db=32.6ms queue=0.9ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T20:13:54Z", "0", "cpu", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406491, itemkey: "cpu", value: "0", timestamp: "2026-07-15T20:13:54Z", message: "CPU usage percentage", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.586] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.0"} [2026-07-15 12:10:47.619] [DEBUG] QUERY OK db=32.4ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T20:13:54Z", "1.0.0", "parameter_config", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406492, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T20:13:54Z", message: "Current parameters version", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.620] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.1"} [2026-07-15 12:10:47.643] [DEBUG] QUERY OK db=22.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T20:13:54Z", "1.0.1", "emv_config", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406493, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T20:13:54Z", message: "Current EMV config version", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.643] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T20:13:54Z", "value" => ""} [2026-07-15 12:10:47.705] [DEBUG] QUERY OK db=20.7ms queue=41.0ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T20:13:54Z", "keys_config", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406494, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T20:13:54Z", message: "Current keys config version", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.706] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T20:13:54Z", "value" => "1.0.0"} [2026-07-15 12:10:47.730] [DEBUG] QUERY OK db=24.5ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T20:13:54Z", "1.0.0", "application", 47204, ~N[2026-07-15 12:10:47], ~N[2026-07-15 12:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:10:47.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406495, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T20:13:54Z", message: "Current application version", status_log_id: 47204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:10:47], updated_at: ~N[2026-07-15 12:10:47]}} [2026-07-15 12:10:47.731] [WARN ] Unexpected async result [2026-07-15 12:10:47.731] [WARN ] Unexpected async result [2026-07-15 12:10:47.733] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=25.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:10:47.738] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:10:47.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:10:47.747] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.4ms idle=12.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:12:38.801] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:12:38.801] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:12:37Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:12:37Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:12:37Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:12:37Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:12:37Z","message":""}]} [2026-07-15 12:12:38.802] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:12:37Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:12:37Z"} [2026-07-15 12:12:38.802] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:12:38.803] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=578.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:12:38.804] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:12:38.832] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms idle=339.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:12:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:12:38.833] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:12:38.885] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:12:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:12:38.916] [DEBUG] QUERY OK db=30.1ms idle=52.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:12:37Z", ~N[2026-07-15 12:12:38], ~N[2026-07-15 12:12:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:12:38.916] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47205, oid: "org-id-placeholder", upload_time: "2026-07-15T12:12:37Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:12:38], updated_at: ~N[2026-07-15 12:12:38]} [2026-07-15 12:12:38.916] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => 28} [2026-07-15 12:12:38.960] [DEBUG] QUERY OK db=43.0ms 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-15T12:12:37Z", "28", "battery", 47205, ~N[2026-07-15 12:12:38], ~N[2026-07-15 12:12:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:12:38.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406496, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:12:37Z", message: nil, status_log_id: 47205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:12:38], updated_at: ~N[2026-07-15 12:12:38]}} [2026-07-15 12:12:38.960] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:12:37Z", "value" => 50} [2026-07-15 12:12:38.991] [DEBUG] QUERY OK db=29.0ms queue=0.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:12:37Z", "50", "memory", 47205, ~N[2026-07-15 12:12:38], ~N[2026-07-15 12:12:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:12:38.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406497, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:12:37Z", message: "Normal", status_log_id: 47205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:12:38], updated_at: ~N[2026-07-15 12:12:38]}} [2026-07-15 12:12:38.991] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => 50} [2026-07-15 12:12:39.040] [DEBUG] QUERY OK db=47.8ms queue=0.3ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:12:37Z", "50", "cpu", 47205, ~N[2026-07-15 12:12:38], ~N[2026-07-15 12:12:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:12:39.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406498, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:12:37Z", message: nil, status_log_id: 47205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:12:38], updated_at: ~N[2026-07-15 12:12:38]}} [2026-07-15 12:12:39.040] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:12:37Z", "value" => "online"} [2026-07-15 12:12:39.104] [DEBUG] QUERY OK db=23.0ms queue=41.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:12:37Z", "online", "network", 47205, ~N[2026-07-15 12:12:39], ~N[2026-07-15 12:12:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:12:39.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406499, itemkey: "network", value: "online", timestamp: "2026-07-15T12:12:37Z", message: nil, status_log_id: 47205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:12:39], updated_at: ~N[2026-07-15 12:12:39]}} [2026-07-15 12:12:39.105] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:12:39.105] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:12:39.109] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=68.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-15 12:12:39.113] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:12:39.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:12:39.120] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.5ms idle=9.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:13:04.210] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:13:04.210] [INFO ] Incoming JSON payload: {"oid":"d4d48255-5254-4759-8503-d403bdb9100b","sn":"98250623730001","uploadTime":"2026-07-15T03:22:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"ram_free_mb","value":"940","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:22:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:13:04.211] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d4d48255-5254-4759-8503-d403bdb9100b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:22:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:22:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:22:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:22:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "940"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:22:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:22:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:22:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:22:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:22:53Z", "vendor" => "morefun"} [2026-07-15 12:13:04.212] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:13:04.212] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:13:04.212] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:13:04.213] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1741.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-15 12:13:04.214] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=912.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-15 12:13:04.214] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:13:04.215] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:13:04.215] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:13:04.256] [DEBUG] QUERY OK source="tms_terminals" db=40.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:13:04], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:13:04.257] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:13:04.257] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=41.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:13:04.280] [DEBUG] QUERY OK source="tms_terminals" db=22.0ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:13:04], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:13:04.343] [DEBUG] QUERY OK db=62.4ms queue=0.1ms idle=22.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "d4d48255-5254-4759-8503-d403bdb9100b", "2026-07-15T03:22:53Z", ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:13:04.343] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47206, oid: "d4d48255-5254-4759-8503-d403bdb9100b", upload_time: "2026-07-15T03:22:53Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]} [2026-07-15 12:13:04.343] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:22:53Z", "value" => "morefun"} [2026-07-15 12:13:04.401] [DEBUG] QUERY OK db=55.9ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "morefun", "vendor", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406500, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.401] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:22:53Z", "value" => "kiosk_launcher"} [2026-07-15 12:13:04.447] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "kiosk_launcher", "model", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406501, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.450] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:22:53Z", "value" => "1.0"} [2026-07-15 12:13:04.501] [DEBUG] QUERY OK db=50.9ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "1.0", "app_version", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406502, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.501] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:22:53Z", "value" => "13"} [2026-07-15 12:13:04.530] [DEBUG] QUERY OK db=28.4ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "13", "android_version", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406503, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.531] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "940"} [2026-07-15 12:13:04.572] [DEBUG] QUERY OK db=40.4ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "940", "ram_free_mb", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406504, itemkey: "ram_free_mb", value: "940", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.572] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:22:53Z", "value" => "WIFI"} [2026-07-15 12:13:04.607] [DEBUG] QUERY OK db=34.0ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "WIFI", "network_type", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406505, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.608] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:22:53Z", "value" => "true"} [2026-07-15 12:13:04.632] [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-15T03:22:53Z", "true", "kiosk_active", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406506, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.632] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:22:53Z", "value" => ""} [2026-07-15 12:13:04.680] [DEBUG] QUERY OK db=46.6ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:22:53Z", "sim_operator", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406507, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.681] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"} [2026-07-15 12:13:04.746] [DEBUG] QUERY OK db=64.8ms queue=0.1ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "UNKNOWN", "sim_number", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406508, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.747] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"} [2026-07-15 12:13:04.767] [DEBUG] QUERY OK db=20.2ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "UNKNOWN", "sim_iccid", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406509, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.768] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"} [2026-07-15 12:13:04.802] [DEBUG] QUERY OK db=33.9ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "UNKNOWN", "sim_imsi", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406510, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.803] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"} [2026-07-15 12:13:04.837] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "UNKNOWN", "sim_iccid2", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406511, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.838] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:22:53Z", "value" => "UNKNOWN"} [2026-07-15 12:13:04.880] [DEBUG] QUERY OK db=42.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "UNKNOWN", "sim_imsi2", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406512, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.881] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "14"} [2026-07-15 12:13:04.988] [DEBUG] QUERY OK db=105.2ms queue=0.1ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "14", "data_usage_mb", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:04.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406513, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:04.990] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:22:53Z", "value" => "0"} [2026-07-15 12:13:05.032] [DEBUG] QUERY OK db=42.3ms idle=110.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "0", "mobile_data_mb", 47206, ~N[2026-07-15 12:13:04], ~N[2026-07-15 12:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:05.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406514, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:04], updated_at: ~N[2026-07-15 12:13:04]}} [2026-07-15 12:13:05.033] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:22:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:13:05.058] [DEBUG] QUERY OK db=23.6ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:22:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47206, ~N[2026-07-15 12:13:05], ~N[2026-07-15 12:13:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:13:05.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406515, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:22:53Z", message: nil, status_log_id: 47206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:13:05], updated_at: ~N[2026-07-15 12:13:05]}} [2026-07-15 12:13:05.067] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=29.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:13:05.076] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:13:05.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms queue=0.2ms idle=18.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:13:05.085] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.9ms idle=16.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:13:50.490] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 12:13:50.491] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=53.6ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 12:13:50.493] [DEBUG] QUERY OK source="filter_usage" db=0.8ms queue=0.4ms idle=15.0ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-07-15 12:13:50.493] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 12:13:51.544] [INFO ] Running offline device check... [2026-07-15 12:13:51.544] [INFO ] Starting offline device check... [2026-07-15 12:13:51.546] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=738.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-15 12:13:51.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=106.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:13:51.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.2ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.563] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.568] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.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 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-15 12:13:51.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.624] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:13:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:13:51.624] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:13:51.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=33.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.628] [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-15 12:13:51.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=18.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:13:51.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=12.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.672] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.682] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.689] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.694] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.695] [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-15 12:13:51.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:13:51.696] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 12:13:51.697] [INFO ] Offline device check completed successfully [2026-07-15 12:14:37.702] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:14:37.702] [INFO ] Incoming JSON payload: {"oid":"911082ea-0af8-47e2-856d-52a2cca03feb","sn":"98250623730001","uploadTime":"2026-07-15T03:24:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"ram_free_mb","value":"944","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:24:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:24: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:14:37.703] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "911082ea-0af8-47e2-856d-52a2cca03feb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:24:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:24:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:24:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:24:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "944"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:24:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:24:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:24:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:24: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:24:27Z", "vendor" => "morefun"} [2026-07-15 12:14:37.703] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:14:37.703] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:14:37.703] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:14:37.704] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=221.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-15 12:14:37.705] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=125.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-15 12:14:37.705] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:14:37.706] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:14:37.706] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:14:37.738] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:14:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:14:37.738] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:14:37.739] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:14:37.797] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:14:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:14:37.841] [DEBUG] QUERY OK db=44.2ms idle=57.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "911082ea-0af8-47e2-856d-52a2cca03feb", "2026-07-15T03:24:27Z", ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:14:37.842] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47207, oid: "911082ea-0af8-47e2-856d-52a2cca03feb", upload_time: "2026-07-15T03:24:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]} [2026-07-15 12:14:37.842] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:24:27Z", "value" => "morefun"} [2026-07-15 12:14:37.895] [DEBUG] QUERY OK db=51.7ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "morefun", "vendor", 47207, ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:37.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406516, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]}} [2026-07-15 12:14:37.895] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:24:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:14:37.920] [DEBUG] QUERY OK db=23.8ms queue=0.2ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "kiosk_launcher", "model", 47207, ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:37.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406517, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]}} [2026-07-15 12:14:37.920] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:24:27Z", "value" => "1.0"} [2026-07-15 12:14:37.959] [DEBUG] QUERY OK db=38.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "1.0", "app_version", 47207, ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:37.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406518, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]}} [2026-07-15 12:14:37.959] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:24:27Z", "value" => "13"} [2026-07-15 12:14:37.995] [DEBUG] QUERY OK db=35.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "13", "android_version", 47207, ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:37.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406519, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]}} [2026-07-15 12:14:37.996] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "944"} [2026-07-15 12:14:38.028] [DEBUG] QUERY OK db=31.7ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "944", "ram_free_mb", 47207, ~N[2026-07-15 12:14:37], ~N[2026-07-15 12:14:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.029] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406520, itemkey: "ram_free_mb", value: "944", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:37], updated_at: ~N[2026-07-15 12:14:37]}} [2026-07-15 12:14:38.029] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:24:27Z", "value" => "WIFI"} [2026-07-15 12:14:38.132] [DEBUG] QUERY OK db=102.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "WIFI", "network_type", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406521, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.132] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:24:27Z", "value" => "true"} [2026-07-15 12:14:38.156] [DEBUG] QUERY OK db=23.0ms idle=104.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "true", "kiosk_active", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406522, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.156] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:24:27Z", "value" => ""} [2026-07-15 12:14:38.185] [DEBUG] QUERY OK db=28.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:24:27Z", "sim_operator", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406523, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.185] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"} [2026-07-15 12:14:38.228] [DEBUG] QUERY OK db=42.5ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "UNKNOWN", "sim_number", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406524, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.229] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"} [2026-07-15 12:14:38.252] [DEBUG] QUERY OK db=22.8ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "UNKNOWN", "sim_iccid", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406525, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.252] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"} [2026-07-15 12:14:38.286] [DEBUG] QUERY OK db=32.6ms queue=0.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "UNKNOWN", "sim_imsi", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406526, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.286] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"} [2026-07-15 12:14:38.323] [DEBUG] QUERY OK db=35.6ms queue=0.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "UNKNOWN", "sim_iccid2", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406527, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.323] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:24:27Z", "value" => "UNKNOWN"} [2026-07-15 12:14:38.352] [DEBUG] QUERY OK db=28.3ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "UNKNOWN", "sim_imsi2", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406528, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.352] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "14"} [2026-07-15 12:14:38.375] [DEBUG] QUERY OK db=22.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "14", "data_usage_mb", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406529, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.376] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:24:27Z", "value" => "0"} [2026-07-15 12:14:38.407] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24:27Z", "0", "mobile_data_mb", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406530, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.408] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:24: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:14:38.471] [DEBUG] QUERY OK db=62.4ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:24: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47207, ~N[2026-07-15 12:14:38], ~N[2026-07-15 12:14:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:14:38.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406531, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:24:27Z", message: nil, status_log_id: 47207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:14:38], updated_at: ~N[2026-07-15 12:14:38]}} [2026-07-15 12:14:38.474] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=66.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:14:38.479] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:10:15]}, %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-15 12:14:38.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:14:38.488] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=1.7ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43756, 43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:15:29.352] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:15:29.352] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:15:27Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:15:27Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:15:27Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:15:27Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:15:27Z","message":""}]} [2026-07-15 12:15:29.352] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:15:27Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:15:27Z"} [2026-07-15 12:15:29.353] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:15:29.354] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=863.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:15:29.354] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:15:29.391] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=0.2ms idle=632.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:15:29], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:15:29.393] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:15:29.455] [DEBUG] QUERY OK source="tms_terminals" db=61.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:15:29], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:15:29.494] [DEBUG] QUERY OK db=37.8ms idle=62.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:15:27Z", ~N[2026-07-15 12:15:29], ~N[2026-07-15 12:15:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:15:29.494] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47208, oid: "org-id-placeholder", upload_time: "2026-07-15T16:15:27Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:15:29], updated_at: ~N[2026-07-15 12:15:29]} [2026-07-15 12:15:29.494] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => 29} [2026-07-15 12:15:29.574] [DEBUG] QUERY OK db=79.2ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:15:27Z", "29", "battery", 47208, ~N[2026-07-15 12:15:29], ~N[2026-07-15 12:15:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:15:29.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406532, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:15:27Z", message: nil, status_log_id: 47208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:15:29], updated_at: ~N[2026-07-15 12:15:29]}} [2026-07-15 12:15:29.574] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:15:27Z", "value" => 50} [2026-07-15 12:15:29.628] [DEBUG] QUERY OK db=52.1ms queue=0.5ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:15:27Z", "50", "memory", 47208, ~N[2026-07-15 12:15:29], ~N[2026-07-15 12:15:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:15:29.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406533, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:15:27Z", message: "Normal", status_log_id: 47208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:15:29], updated_at: ~N[2026-07-15 12:15:29]}} [2026-07-15 12:15:29.628] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => 50} [2026-07-15 12:15:29.676] [DEBUG] QUERY OK db=46.8ms queue=0.5ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:15:27Z", "50", "cpu", 47208, ~N[2026-07-15 12:15:29], ~N[2026-07-15 12:15:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:15:29.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406534, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:15:27Z", message: nil, status_log_id: 47208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:15:29], updated_at: ~N[2026-07-15 12:15:29]}} [2026-07-15 12:15:29.677] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:15:27Z", "value" => "online"} [2026-07-15 12:15:29.697] [DEBUG] QUERY OK db=19.3ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:15:27Z", "online", "network", 47208, ~N[2026-07-15 12:15:29], ~N[2026-07-15 12:15:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:15:29.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406535, itemkey: "network", value: "online", timestamp: "2026-07-15T16:15:27Z", message: nil, status_log_id: 47208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:15:29], updated_at: ~N[2026-07-15 12:15:29]}} [2026-07-15 12:15:29.697] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:15:29.698] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:15:29.701] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.2ms idle=23.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:15:29.709] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:15:29]}, %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-15 12:15:29.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:15:29.718] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.8ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:17:18.983] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:17:18.984] [INFO ] Incoming JSON payload: {"oid":"0e5c20d3-6619-457d-8aaa-25a848fdd961","sn":"98250623730001","uploadTime":"2026-07-15T03:27:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"ram_free_mb","value":"941","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:27:09Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:17:18.985] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0e5c20d3-6619-457d-8aaa-25a848fdd961", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:27:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:27:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:27:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:27:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "941"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:27:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:27:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:27:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:27:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:27:09Z", "vendor" => "morefun"} [2026-07-15 12:17:18.985] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:17:18.985] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:17:18.985] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:17:18.986] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=894.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-15 12:17:18.987] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=496.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-15 12:17:18.987] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:17:18.988] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:17:18.988] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:17:19.054] [DEBUG] QUERY OK source="tms_terminals" db=65.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:17:18], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:17:19.055] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:17:19.056] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=66.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:17:19.099] [DEBUG] QUERY OK source="tms_terminals" db=42.5ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:17:19], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:17:19.138] [DEBUG] QUERY OK db=38.6ms queue=0.1ms idle=4.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "0e5c20d3-6619-457d-8aaa-25a848fdd961", "2026-07-15T03:27:09Z", ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:17:19.139] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47209, oid: "0e5c20d3-6619-457d-8aaa-25a848fdd961", upload_time: "2026-07-15T03:27:09Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]} [2026-07-15 12:17:19.139] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:27:09Z", "value" => "morefun"} [2026-07-15 12:17:19.210] [DEBUG] QUERY OK db=71.1ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "morefun", "vendor", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406536, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.211] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:27:09Z", "value" => "kiosk_launcher"} [2026-07-15 12:17:19.255] [DEBUG] QUERY OK db=44.3ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "kiosk_launcher", "model", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406537, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.256] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:27:09Z", "value" => "1.0"} [2026-07-15 12:17:19.328] [DEBUG] QUERY OK db=71.4ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "1.0", "app_version", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406538, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.328] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:27:09Z", "value" => "13"} [2026-07-15 12:17:19.395] [DEBUG] QUERY OK db=66.5ms queue=0.1ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "13", "android_version", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406539, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.396] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "941"} [2026-07-15 12:17:19.453] [DEBUG] QUERY OK db=56.4ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "941", "ram_free_mb", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406540, itemkey: "ram_free_mb", value: "941", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.454] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:27:09Z", "value" => "WIFI"} [2026-07-15 12:17:19.488] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "WIFI", "network_type", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406541, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.489] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:27:09Z", "value" => "true"} [2026-07-15 12:17:19.543] [DEBUG] QUERY OK db=53.2ms queue=0.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "true", "kiosk_active", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406542, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.543] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:27:09Z", "value" => ""} [2026-07-15 12:17:19.591] [DEBUG] QUERY OK db=47.6ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:27:09Z", "sim_operator", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406543, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.592] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"} [2026-07-15 12:17:19.637] [DEBUG] QUERY OK db=44.4ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "UNKNOWN", "sim_number", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406544, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.637] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"} [2026-07-15 12:17:19.685] [DEBUG] QUERY OK db=47.3ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "UNKNOWN", "sim_iccid", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406545, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.685] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"} [2026-07-15 12:17:19.739] [DEBUG] QUERY OK db=53.3ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "UNKNOWN", "sim_imsi", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406546, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.739] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"} [2026-07-15 12:17:19.795] [DEBUG] QUERY OK db=55.3ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "UNKNOWN", "sim_iccid2", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406547, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.796] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:27:09Z", "value" => "UNKNOWN"} [2026-07-15 12:17:19.852] [DEBUG] QUERY OK db=55.7ms queue=0.1ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "UNKNOWN", "sim_imsi2", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406548, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.852] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "14"} [2026-07-15 12:17:19.927] [DEBUG] QUERY OK db=74.5ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "14", "data_usage_mb", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406549, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.928] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:27:09Z", "value" => "0"} [2026-07-15 12:17:19.980] [DEBUG] QUERY OK db=51.0ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "0", "mobile_data_mb", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:19.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406550, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:19.981] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:27:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:17:20.038] [DEBUG] QUERY OK db=55.9ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:27:09Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47209, ~N[2026-07-15 12:17:19], ~N[2026-07-15 12:17:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:20.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406551, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:27:09Z", message: nil, status_log_id: 47209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:19], updated_at: ~N[2026-07-15 12:17:19]}} [2026-07-15 12:17:20.040] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=59.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-15 12:17:20.045] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:15:29]}, %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-15 12:17:20.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=8.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:17:20.052] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=10.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:17:50.911] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:17:50.911] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:17:49Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:17:49Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:17:49Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:17:49Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:17:49Z","message":""}]} [2026-07-15 12:17:50.911] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:17:49Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:17:49Z"} [2026-07-15 12:17:50.911] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:17:50.913] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=1421.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:17:50.914] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:17:50.958] [DEBUG] QUERY OK source="tms_terminals" db=44.0ms queue=0.1ms idle=731.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:17:50], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:17:50.960] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=45.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-15 12:17:50.992] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:17:50], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:17:51.043] [DEBUG] QUERY OK db=48.3ms idle=1.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:17:49Z", ~N[2026-07-15 12:17:50], ~N[2026-07-15 12:17:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:17:51.043] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47210, oid: "org-id-placeholder", upload_time: "2026-07-15T12:17:49Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:50], updated_at: ~N[2026-07-15 12:17:50]} [2026-07-15 12:17:51.043] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => 28} [2026-07-15 12:17:51.079] [DEBUG] QUERY OK db=35.8ms idle=11.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:17:49Z", "28", "battery", 47210, ~N[2026-07-15 12:17:51], ~N[2026-07-15 12:17:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:51.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406552, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:17:49Z", message: nil, status_log_id: 47210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:51], updated_at: ~N[2026-07-15 12:17:51]}} [2026-07-15 12:17:51.080] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:17:49Z", "value" => 50} [2026-07-15 12:17:51.125] [DEBUG] QUERY OK db=45.2ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:17:49Z", "50", "memory", 47210, ~N[2026-07-15 12:17:51], ~N[2026-07-15 12:17:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:51.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406553, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:17:49Z", message: "Normal", status_log_id: 47210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:51], updated_at: ~N[2026-07-15 12:17:51]}} [2026-07-15 12:17:51.126] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => 50} [2026-07-15 12:17:51.184] [DEBUG] QUERY OK db=57.1ms queue=0.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:17:49Z", "50", "cpu", 47210, ~N[2026-07-15 12:17:51], ~N[2026-07-15 12:17:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:51.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406554, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:17:49Z", message: nil, status_log_id: 47210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:51], updated_at: ~N[2026-07-15 12:17:51]}} [2026-07-15 12:17:51.184] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:17:49Z", "value" => "online"} [2026-07-15 12:17:51.234] [DEBUG] QUERY OK db=48.5ms queue=0.6ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:17:49Z", "online", "network", 47210, ~N[2026-07-15 12:17:51], ~N[2026-07-15 12:17:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:17:51.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406555, itemkey: "network", value: "online", timestamp: "2026-07-15T12:17:49Z", message: nil, status_log_id: 47210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:17:51], updated_at: ~N[2026-07-15 12:17:51]}} [2026-07-15 12:17:51.235] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:17:51.235] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:17:51.239] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=50.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-15 12:17:51.243] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:15:29]}, %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-15 12:17:51.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.1ms queue=0.2ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:17:51.254] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.4ms idle=14.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:18:51.697] [INFO ] Running offline device check... [2026-07-15 12:18:51.697] [INFO ] Starting offline device check... [2026-07-15 12:18:51.699] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=1202.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:18:51.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=336.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:18:51.712] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.715] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.727] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms queue=0.5ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.840] [DEBUG] QUERY OK source="tms_terminals" db=95.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:18:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:18:51.841] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:18:51.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=96.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:18:51.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=15.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.7ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=13.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:18:51.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:18:51.904] [INFO ] Offline device check completed. Found 37 offline devices, updated 1 statuses. [2026-07-15 12:18:51.904] [INFO ] Offline device check completed successfully [2026-07-15 12:19:45.423] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:19:45.423] [INFO ] Incoming JSON payload: {"oid":"23671e0e-c806-44f5-b3e1-15c44f6782c6","sn":"98250623730001","uploadTime":"2026-07-15T03:29:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:29:35Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:19:45.424] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "23671e0e-c806-44f5-b3e1-15c44f6782c6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:29:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:29:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:29:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:29:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:29:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:29:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:29:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:29:35Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:29:35Z", "vendor" => "morefun"} [2026-07-15 12:19:45.424] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:19:45.424] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:19:45.425] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:19:45.426] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1844.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-15 12:19:45.427] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=844.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-15 12:19:45.427] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:19:45.428] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:19:45.428] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:19:45.484] [DEBUG] QUERY OK source="tms_terminals" db=55.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:19:45], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:19:45.484] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:19:45.487] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=57.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:19:45.557] [DEBUG] QUERY OK source="tms_terminals" db=67.3ms queue=1.6ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:19:45], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:19:45.606] [DEBUG] QUERY OK db=46.9ms idle=72.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "23671e0e-c806-44f5-b3e1-15c44f6782c6", "2026-07-15T03:29:35Z", ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:19:45.607] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47211, oid: "23671e0e-c806-44f5-b3e1-15c44f6782c6", upload_time: "2026-07-15T03:29:35Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]} [2026-07-15 12:19:45.607] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:29:35Z", "value" => "morefun"} [2026-07-15 12:19:45.661] [DEBUG] QUERY OK db=53.5ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "morefun", "vendor", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406556, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.661] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:29:35Z", "value" => "kiosk_launcher"} [2026-07-15 12:19:45.703] [DEBUG] QUERY OK db=40.6ms queue=0.6ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "kiosk_launcher", "model", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406557, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.704] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:29:35Z", "value" => "1.0"} [2026-07-15 12:19:45.763] [DEBUG] QUERY OK db=59.0ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "1.0", "app_version", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406558, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.764] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:29:35Z", "value" => "13"} [2026-07-15 12:19:45.823] [DEBUG] QUERY OK db=57.9ms queue=0.1ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "13", "android_version", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406559, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.823] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "938"} [2026-07-15 12:19:45.866] [DEBUG] QUERY OK db=42.3ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "938", "ram_free_mb", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406560, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.867] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:29:35Z", "value" => "WIFI"} [2026-07-15 12:19:45.899] [DEBUG] QUERY OK db=32.0ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "WIFI", "network_type", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406561, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.900] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:29:35Z", "value" => "true"} [2026-07-15 12:19:45.937] [DEBUG] QUERY OK db=36.5ms queue=0.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "true", "kiosk_active", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:45.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406562, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:45.938] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:29:35Z", "value" => ""} [2026-07-15 12:19:46.007] [DEBUG] QUERY OK db=68.6ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:29:35Z", "sim_operator", 47211, ~N[2026-07-15 12:19:45], ~N[2026-07-15 12:19:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406563, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:45], updated_at: ~N[2026-07-15 12:19:45]}} [2026-07-15 12:19:46.007] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"} [2026-07-15 12:19:46.053] [DEBUG] QUERY OK db=45.4ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "UNKNOWN", "sim_number", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406564, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.054] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"} [2026-07-15 12:19:46.082] [DEBUG] QUERY OK db=27.2ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "UNKNOWN", "sim_iccid", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406565, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.082] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"} [2026-07-15 12:19:46.142] [DEBUG] QUERY OK db=59.6ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "UNKNOWN", "sim_imsi", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406566, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.142] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"} [2026-07-15 12:19:46.189] [DEBUG] QUERY OK db=46.4ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "UNKNOWN", "sim_iccid2", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406567, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.190] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:29:35Z", "value" => "UNKNOWN"} [2026-07-15 12:19:46.232] [DEBUG] QUERY OK db=41.6ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "UNKNOWN", "sim_imsi2", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406568, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.232] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "14"} [2026-07-15 12:19:46.288] [DEBUG] QUERY OK db=55.7ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "14", "data_usage_mb", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406569, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.289] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:29:35Z", "value" => "0"} [2026-07-15 12:19:46.340] [DEBUG] QUERY OK db=50.6ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "0", "mobile_data_mb", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406570, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.341] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:29:35Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:19:46.402] [DEBUG] QUERY OK db=58.1ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:29:35Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47211, ~N[2026-07-15 12:19:46], ~N[2026-07-15 12:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:19:46.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406571, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:29:35Z", message: nil, status_log_id: 47211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:19:46], updated_at: ~N[2026-07-15 12:19:46]}} [2026-07-15 12:19:46.404] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=63.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:19:46.409] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:15:29]}, %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-15 12:19:46.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:19:46.421] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=0.8ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43755, 43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:20:43.545] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:20:43.546] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:20:40Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:20:40Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:20:40Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:20:40Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:20:40Z","message":""}]} [2026-07-15 12:20:43.546] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:20:40Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:20:40Z"} [2026-07-15 12:20:43.546] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:20:43.547] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1023.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:20:43.548] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:20:43.617] [DEBUG] QUERY OK source="tms_terminals" db=69.0ms idle=792.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:20:43], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:20:43.619] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=70.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:20:43.686] [DEBUG] QUERY OK source="tms_terminals" db=66.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:20:43], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:20:43.716] [DEBUG] QUERY OK db=29.5ms idle=67.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:20:40Z", ~N[2026-07-15 12:20:43], ~N[2026-07-15 12:20:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:20:43.716] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47212, oid: "org-id-placeholder", upload_time: "2026-07-15T16:20:40Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:20:43], updated_at: ~N[2026-07-15 12:20:43]} [2026-07-15 12:20:43.716] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => 29} [2026-07-15 12:20:43.764] [DEBUG] QUERY OK db=47.2ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:20:40Z", "29", "battery", 47212, ~N[2026-07-15 12:20:43], ~N[2026-07-15 12:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:20:43.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406572, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:20:40Z", message: nil, status_log_id: 47212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:20:43], updated_at: ~N[2026-07-15 12:20:43]}} [2026-07-15 12:20:43.764] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:20:40Z", "value" => 50} [2026-07-15 12:20:43.801] [DEBUG] QUERY OK db=36.7ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:20:40Z", "50", "memory", 47212, ~N[2026-07-15 12:20:43], ~N[2026-07-15 12:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:20:43.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406573, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:20:40Z", message: "Normal", status_log_id: 47212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:20:43], updated_at: ~N[2026-07-15 12:20:43]}} [2026-07-15 12:20:43.802] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => 50} [2026-07-15 12:20:43.859] [DEBUG] QUERY OK db=56.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:20:40Z", "50", "cpu", 47212, ~N[2026-07-15 12:20:43], ~N[2026-07-15 12:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:20:43.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406574, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:20:40Z", message: nil, status_log_id: 47212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:20:43], updated_at: ~N[2026-07-15 12:20:43]}} [2026-07-15 12:20:43.860] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:20:40Z", "value" => "online"} [2026-07-15 12:20:43.910] [DEBUG] QUERY OK db=49.3ms queue=0.1ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:20:40Z", "online", "network", 47212, ~N[2026-07-15 12:20:43], ~N[2026-07-15 12:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:20:43.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406575, itemkey: "network", value: "online", timestamp: "2026-07-15T16:20:40Z", message: nil, status_log_id: 47212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:20:43], updated_at: ~N[2026-07-15 12:20:43]}} [2026-07-15 12:20:43.910] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:20:43.911] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:20:43.914] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=54.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-15 12:20:43.918] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:20:43.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.7ms queue=0.1ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:20:43.929] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:21:06.115] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:21:06.115] [INFO ] Incoming JSON payload: {"oid":"51e95fa2-061e-4f2d-beb0-1b6b7c7a5b28","sn":"98250623730001","uploadTime":"2026-07-15T03:30:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:30:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:30: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:21:06.116] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "51e95fa2-061e-4f2d-beb0-1b6b7c7a5b28", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:30:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:30:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:30:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:30:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:30:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:30:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:30:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:30: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:30:55Z", "vendor" => "morefun"} [2026-07-15 12:21:06.116] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:21:06.116] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:21:06.116] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:21:06.118] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1277.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-15 12:21:06.119] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=276.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-15 12:21:06.119] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:21:06.121] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:21:06.122] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:21:06.147] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:21:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:21:06.147] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:21:06.148] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=26.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:21:06.335] [DEBUG] QUERY OK source="tms_terminals" db=185.7ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:21:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:21:06.379] [DEBUG] QUERY OK db=43.2ms idle=187.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "51e95fa2-061e-4f2d-beb0-1b6b7c7a5b28", "2026-07-15T03:30:55Z", ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:21:06.379] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47213, oid: "51e95fa2-061e-4f2d-beb0-1b6b7c7a5b28", upload_time: "2026-07-15T03:30:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]} [2026-07-15 12:21:06.379] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:30:55Z", "value" => "morefun"} [2026-07-15 12:21:06.443] [DEBUG] QUERY OK db=61.6ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "morefun", "vendor", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406576, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.444] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:30:55Z", "value" => "kiosk_launcher"} [2026-07-15 12:21:06.488] [DEBUG] QUERY OK db=44.1ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "kiosk_launcher", "model", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406577, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.489] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:30:55Z", "value" => "1.0"} [2026-07-15 12:21:06.540] [DEBUG] QUERY OK db=49.0ms queue=1.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "1.0", "app_version", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406578, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.540] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:30:55Z", "value" => "13"} [2026-07-15 12:21:06.571] [DEBUG] QUERY OK db=30.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "13", "android_version", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406579, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.572] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "937"} [2026-07-15 12:21:06.616] [DEBUG] QUERY OK db=44.1ms queue=0.4ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "937", "ram_free_mb", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406580, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.617] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:30:55Z", "value" => "WIFI"} [2026-07-15 12:21:06.680] [DEBUG] QUERY OK db=63.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "WIFI", "network_type", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406581, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.681] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:30:55Z", "value" => "true"} [2026-07-15 12:21:06.730] [DEBUG] QUERY OK db=49.0ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "true", "kiosk_active", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406582, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.730] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:30:55Z", "value" => ""} [2026-07-15 12:21:06.775] [DEBUG] QUERY OK db=44.0ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:30:55Z", "sim_operator", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406583, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.775] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"} [2026-07-15 12:21:06.823] [DEBUG] QUERY OK db=47.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "UNKNOWN", "sim_number", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406584, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.824] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"} [2026-07-15 12:21:06.873] [DEBUG] QUERY OK db=48.3ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "UNKNOWN", "sim_iccid", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406585, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.874] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"} [2026-07-15 12:21:06.933] [DEBUG] QUERY OK db=58.7ms queue=0.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "UNKNOWN", "sim_imsi", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406586, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.934] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"} [2026-07-15 12:21:06.974] [DEBUG] QUERY OK db=39.6ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "UNKNOWN", "sim_iccid2", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:06.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406587, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:06.975] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:30:55Z", "value" => "UNKNOWN"} [2026-07-15 12:21:07.033] [DEBUG] QUERY OK db=58.3ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "UNKNOWN", "sim_imsi2", 47213, ~N[2026-07-15 12:21:06], ~N[2026-07-15 12:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:07.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406588, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:06], updated_at: ~N[2026-07-15 12:21:06]}} [2026-07-15 12:21:07.034] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "14"} [2026-07-15 12:21:07.086] [DEBUG] QUERY OK db=52.1ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "14", "data_usage_mb", 47213, ~N[2026-07-15 12:21:07], ~N[2026-07-15 12:21:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:07.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406589, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:07], updated_at: ~N[2026-07-15 12:21:07]}} [2026-07-15 12:21:07.087] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:30:55Z", "value" => "0"} [2026-07-15 12:21:07.120] [DEBUG] QUERY OK db=32.0ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30:55Z", "0", "mobile_data_mb", 47213, ~N[2026-07-15 12:21:07], ~N[2026-07-15 12:21:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:07.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406590, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:07], updated_at: ~N[2026-07-15 12:21:07]}} [2026-07-15 12:21:07.122] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:30: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:21:07.175] [DEBUG] QUERY OK db=46.7ms queue=1.1ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:30: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47213, ~N[2026-07-15 12:21:07], ~N[2026-07-15 12:21:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:07.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406591, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:30:55Z", message: nil, status_log_id: 47213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:07], updated_at: ~N[2026-07-15 12:21:07]}} [2026-07-15 12:21:07.178] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=56.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:21:07.190] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:21:07.200] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=2.5ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:21:07.202] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.4ms idle=22.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:21:36.015] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:21:36.015] [INFO ] Incoming JSON payload: {"oid":"5e421f23-2f2b-4a32-b89e-1171c556ded5","sn":"98250623730001","uploadTime":"2026-07-15T03:31:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:31:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:21:36.016] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5e421f23-2f2b-4a32-b89e-1171c556ded5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:31:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:31:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:31:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:31:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:31:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:31:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:31:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:31:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:31:26Z", "vendor" => "morefun"} [2026-07-15 12:21:36.016] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:21:36.016] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:21:36.017] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:21:36.018] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1096.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-15 12:21:36.019] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=95.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-15 12:21:36.019] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:21:36.019] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:21:36.020] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:21:36.073] [DEBUG] QUERY OK source="tms_terminals" db=52.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:21:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:21:36.073] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:21:36.074] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=53.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:21:36.127] [DEBUG] QUERY OK source="tms_terminals" db=52.7ms queue=0.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:21:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:21:36.162] [DEBUG] QUERY OK db=34.5ms idle=53.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "5e421f23-2f2b-4a32-b89e-1171c556ded5", "2026-07-15T03:31:26Z", ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:21:36.163] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47214, oid: "5e421f23-2f2b-4a32-b89e-1171c556ded5", upload_time: "2026-07-15T03:31:26Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]} [2026-07-15 12:21:36.163] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:31:26Z", "value" => "morefun"} [2026-07-15 12:21:36.216] [DEBUG] QUERY OK db=52.6ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "morefun", "vendor", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406592, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.217] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:31:26Z", "value" => "kiosk_launcher"} [2026-07-15 12:21:36.253] [DEBUG] QUERY OK db=36.2ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "kiosk_launcher", "model", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406593, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.254] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:31:26Z", "value" => "1.0"} [2026-07-15 12:21:36.312] [DEBUG] QUERY OK db=57.8ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "1.0", "app_version", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406594, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.312] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:31:26Z", "value" => "13"} [2026-07-15 12:21:36.373] [DEBUG] QUERY OK db=60.4ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "13", "android_version", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406595, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.373] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "936"} [2026-07-15 12:21:36.428] [DEBUG] QUERY OK db=54.7ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "936", "ram_free_mb", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406596, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.429] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:31:26Z", "value" => "WIFI"} [2026-07-15 12:21:36.539] [DEBUG] QUERY OK db=109.7ms queue=0.1ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "WIFI", "network_type", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406597, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.539] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:31:26Z", "value" => "true"} [2026-07-15 12:21:36.603] [DEBUG] QUERY OK db=62.9ms queue=0.1ms idle=111.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "true", "kiosk_active", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406598, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.603] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:31:26Z", "value" => ""} [2026-07-15 12:21:36.636] [DEBUG] QUERY OK db=32.6ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:31:26Z", "sim_operator", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406599, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.637] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"} [2026-07-15 12:21:36.694] [DEBUG] QUERY OK db=57.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "UNKNOWN", "sim_number", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406600, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.695] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"} [2026-07-15 12:21:36.753] [DEBUG] QUERY OK db=57.1ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "UNKNOWN", "sim_iccid", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406601, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.753] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"} [2026-07-15 12:21:36.808] [DEBUG] QUERY OK db=54.3ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "UNKNOWN", "sim_imsi", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406602, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.808] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"} [2026-07-15 12:21:36.847] [DEBUG] QUERY OK db=38.6ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "UNKNOWN", "sim_iccid2", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406603, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.848] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:31:26Z", "value" => "UNKNOWN"} [2026-07-15 12:21:36.918] [DEBUG] QUERY OK db=69.4ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "UNKNOWN", "sim_imsi2", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406604, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.918] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "14"} [2026-07-15 12:21:36.946] [DEBUG] QUERY OK db=26.6ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "14", "data_usage_mb", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:36.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406605, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:36.946] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:31:26Z", "value" => "0"} [2026-07-15 12:21:37.011] [DEBUG] QUERY OK db=64.0ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "0", "mobile_data_mb", 47214, ~N[2026-07-15 12:21:36], ~N[2026-07-15 12:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:37.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406606, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:36], updated_at: ~N[2026-07-15 12:21:36]}} [2026-07-15 12:21:37.013] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:31:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:21:37.074] [DEBUG] QUERY OK db=59.8ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47214, ~N[2026-07-15 12:21:37], ~N[2026-07-15 12:21:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:21:37.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406607, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:31:26Z", message: nil, status_log_id: 47214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:21:37], updated_at: ~N[2026-07-15 12:21:37]}} [2026-07-15 12:21:37.076] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:21:37.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:21:37.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:21:37.090] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.1ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:22:06.219] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:22:06.219] [INFO ] Incoming JSON payload: {"oid":"91b7ef5c-3b7e-4623-8ac9-fd0d9d74b47d","sn":"98250623730001","uploadTime":"2026-07-15T03:31:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:31:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:31: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:22:06.222] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "91b7ef5c-3b7e-4623-8ac9-fd0d9d74b47d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:31:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:31:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:31:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:31:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:31:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:31:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:31:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:31: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:31:56Z", "vendor" => "morefun"} [2026-07-15 12:22:06.222] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:22:06.222] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:22:06.222] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:22:06.224] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1212.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-15 12:22:06.225] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=211.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-15 12:22:06.226] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:22:06.227] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:22:06.228] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:22:06.261] [DEBUG] QUERY OK source="tms_terminals" db=32.8ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:22:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:22:06.261] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:22:06.263] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=34.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:22:06.327] [DEBUG] QUERY OK source="tms_terminals" db=64.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:22:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:22:06.393] [DEBUG] QUERY OK db=65.4ms queue=0.1ms idle=64.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "91b7ef5c-3b7e-4623-8ac9-fd0d9d74b47d", "2026-07-15T03:31:56Z", ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:22:06.393] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47215, oid: "91b7ef5c-3b7e-4623-8ac9-fd0d9d74b47d", upload_time: "2026-07-15T03:31:56Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]} [2026-07-15 12:22:06.394] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:31:56Z", "value" => "morefun"} [2026-07-15 12:22:06.437] [DEBUG] QUERY OK db=42.7ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "morefun", "vendor", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406608, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.439] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:31:56Z", "value" => "kiosk_launcher"} [2026-07-15 12:22:06.494] [DEBUG] QUERY OK db=54.2ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "kiosk_launcher", "model", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406609, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.495] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:31:56Z", "value" => "1.0"} [2026-07-15 12:22:06.550] [DEBUG] QUERY OK db=52.3ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "1.0", "app_version", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406610, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.550] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:31:56Z", "value" => "13"} [2026-07-15 12:22:06.604] [DEBUG] QUERY OK db=53.4ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "13", "android_version", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406611, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.605] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "934"} [2026-07-15 12:22:06.668] [DEBUG] QUERY OK db=63.3ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "934", "ram_free_mb", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406612, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.669] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:31:56Z", "value" => "WIFI"} [2026-07-15 12:22:06.727] [DEBUG] QUERY OK db=56.3ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "WIFI", "network_type", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406613, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.728] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:31:56Z", "value" => "true"} [2026-07-15 12:22:06.780] [DEBUG] QUERY OK db=50.8ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "true", "kiosk_active", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406614, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.782] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:31:56Z", "value" => ""} [2026-07-15 12:22:06.850] [DEBUG] QUERY OK db=67.9ms queue=0.1ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:31:56Z", "sim_operator", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406615, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.851] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"} [2026-07-15 12:22:06.901] [DEBUG] QUERY OK db=49.7ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "UNKNOWN", "sim_number", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406616, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.902] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"} [2026-07-15 12:22:06.972] [DEBUG] QUERY OK db=69.9ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "UNKNOWN", "sim_iccid", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:06.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406617, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:06.972] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"} [2026-07-15 12:22:07.010] [DEBUG] QUERY OK db=37.7ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "UNKNOWN", "sim_imsi", 47215, ~N[2026-07-15 12:22:06], ~N[2026-07-15 12:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406618, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:06], updated_at: ~N[2026-07-15 12:22:06]}} [2026-07-15 12:22:07.011] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"} [2026-07-15 12:22:07.072] [DEBUG] QUERY OK db=60.4ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "UNKNOWN", "sim_iccid2", 47215, ~N[2026-07-15 12:22:07], ~N[2026-07-15 12:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406619, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:07], updated_at: ~N[2026-07-15 12:22:07]}} [2026-07-15 12:22:07.072] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:31:56Z", "value" => "UNKNOWN"} [2026-07-15 12:22:07.151] [DEBUG] QUERY OK db=77.8ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "UNKNOWN", "sim_imsi2", 47215, ~N[2026-07-15 12:22:07], ~N[2026-07-15 12:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406620, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:07], updated_at: ~N[2026-07-15 12:22:07]}} [2026-07-15 12:22:07.152] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "14"} [2026-07-15 12:22:07.205] [DEBUG] QUERY OK db=52.5ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "14", "data_usage_mb", 47215, ~N[2026-07-15 12:22:07], ~N[2026-07-15 12:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406621, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:07], updated_at: ~N[2026-07-15 12:22:07]}} [2026-07-15 12:22:07.206] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:31:56Z", "value" => "0"} [2026-07-15 12:22:07.275] [DEBUG] QUERY OK db=68.8ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31:56Z", "0", "mobile_data_mb", 47215, ~N[2026-07-15 12:22:07], ~N[2026-07-15 12:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406622, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:07], updated_at: ~N[2026-07-15 12:22:07]}} [2026-07-15 12:22:07.277] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:31: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:22:07.348] [DEBUG] QUERY OK db=69.4ms queue=0.1ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:31: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47215, ~N[2026-07-15 12:22:07], ~N[2026-07-15 12:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:07.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406623, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:31:56Z", message: nil, status_log_id: 47215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:07], updated_at: ~N[2026-07-15 12:22:07]}} [2026-07-15 12:22:07.354] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.2ms idle=76.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-15 12:22:07.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:22:07.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=17.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:22:07.372] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=17.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:22:36.670] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:22:36.670] [INFO ] Incoming JSON payload: {"oid":"3f910104-a07a-4903-af3a-7aa98ce9c815","sn":"98250623730001","uploadTime":"2026-07-15T03:32:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:32:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:22:36.671] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f910104-a07a-4903-af3a-7aa98ce9c815", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:32:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:32:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:32:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:32:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:32:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:32:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:32:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:32:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:32:26Z", "vendor" => "morefun"} [2026-07-15 12:22:36.671] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:22:36.672] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:22:36.672] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:22:36.673] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=476.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-15 12:22:36.676] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=281.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-15 12:22:36.676] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:22:36.677] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:22:36.677] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:22:36.730] [DEBUG] QUERY OK source="tms_terminals" db=52.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:22:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:22:36.731] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:22:36.731] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=54.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:22:36.786] [DEBUG] QUERY OK source="tms_terminals" db=54.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:22:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:22:36.835] [DEBUG] QUERY OK db=48.6ms idle=55.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3f910104-a07a-4903-af3a-7aa98ce9c815", "2026-07-15T03:32:26Z", ~N[2026-07-15 12:22:36], ~N[2026-07-15 12:22:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:22:36.836] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47216, oid: "3f910104-a07a-4903-af3a-7aa98ce9c815", upload_time: "2026-07-15T03:32:26Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:36], updated_at: ~N[2026-07-15 12:22:36]} [2026-07-15 12:22:36.836] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:32:26Z", "value" => "morefun"} [2026-07-15 12:22:36.894] [DEBUG] QUERY OK db=57.2ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "morefun", "vendor", 47216, ~N[2026-07-15 12:22:36], ~N[2026-07-15 12:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:36.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406624, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:36], updated_at: ~N[2026-07-15 12:22:36]}} [2026-07-15 12:22:36.894] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:32:26Z", "value" => "kiosk_launcher"} [2026-07-15 12:22:36.924] [DEBUG] QUERY OK db=29.6ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "kiosk_launcher", "model", 47216, ~N[2026-07-15 12:22:36], ~N[2026-07-15 12:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:36.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406625, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:36], updated_at: ~N[2026-07-15 12:22:36]}} [2026-07-15 12:22:36.925] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:32:26Z", "value" => "1.0"} [2026-07-15 12:22:36.972] [DEBUG] QUERY OK db=47.2ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "1.0", "app_version", 47216, ~N[2026-07-15 12:22:36], ~N[2026-07-15 12:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:36.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406626, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:36], updated_at: ~N[2026-07-15 12:22:36]}} [2026-07-15 12:22:36.973] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:32:26Z", "value" => "13"} [2026-07-15 12:22:37.020] [DEBUG] QUERY OK db=46.7ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "13", "android_version", 47216, ~N[2026-07-15 12:22:36], ~N[2026-07-15 12:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406627, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:36], updated_at: ~N[2026-07-15 12:22:36]}} [2026-07-15 12:22:37.021] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "932"} [2026-07-15 12:22:37.081] [DEBUG] QUERY OK db=59.6ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "932", "ram_free_mb", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406628, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.081] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:32:26Z", "value" => "WIFI"} [2026-07-15 12:22:37.119] [DEBUG] QUERY OK db=37.7ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "WIFI", "network_type", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406629, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.120] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:32:26Z", "value" => "true"} [2026-07-15 12:22:37.182] [DEBUG] QUERY OK db=61.5ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "true", "kiosk_active", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406630, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.182] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:32:26Z", "value" => ""} [2026-07-15 12:22:37.235] [DEBUG] QUERY OK db=52.6ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:32:26Z", "sim_operator", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406631, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.236] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"} [2026-07-15 12:22:37.269] [DEBUG] QUERY OK db=32.2ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "UNKNOWN", "sim_number", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406632, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.269] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"} [2026-07-15 12:22:37.328] [DEBUG] QUERY OK db=58.9ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "UNKNOWN", "sim_iccid", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406633, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.329] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"} [2026-07-15 12:22:37.378] [DEBUG] QUERY OK db=48.8ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "UNKNOWN", "sim_imsi", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406634, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.378] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"} [2026-07-15 12:22:37.421] [DEBUG] QUERY OK db=41.8ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "UNKNOWN", "sim_iccid2", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406635, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.422] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:32:26Z", "value" => "UNKNOWN"} [2026-07-15 12:22:37.464] [DEBUG] QUERY OK db=42.0ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "UNKNOWN", "sim_imsi2", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406636, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.465] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "14"} [2026-07-15 12:22:37.518] [DEBUG] QUERY OK db=52.8ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "14", "data_usage_mb", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406637, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.519] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:32:26Z", "value" => "0"} [2026-07-15 12:22:37.551] [DEBUG] QUERY OK db=32.2ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "0", "mobile_data_mb", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406638, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.552] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:32:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:22:37.615] [DEBUG] QUERY OK db=61.9ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47216, ~N[2026-07-15 12:22:37], ~N[2026-07-15 12:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:22:37.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406639, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:32:26Z", message: nil, status_log_id: 47216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:22:37], updated_at: ~N[2026-07-15 12:22:37]}} [2026-07-15 12:22:37.618] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=65.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-15 12:22:37.623] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:22:37.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=8.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:22:37.629] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.3ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:02.675] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:23:02.677] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:23:01Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:23:01Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:23:01Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:23:01Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:23:01Z","message":""}]} [2026-07-15 12:23:02.677] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:23:01Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:23:01Z"} [2026-07-15 12:23:02.683] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:23:02.684] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=419.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:23:02.684] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:23:02.743] [DEBUG] QUERY OK source="tms_terminals" db=58.7ms idle=170.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:23:02], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:23:02.746] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=61.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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:23:02.796] [DEBUG] QUERY OK source="tms_terminals" db=49.2ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:23:02], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:23:02.840] [DEBUG] QUERY OK db=41.5ms idle=52.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:23:01Z", ~N[2026-07-15 12:23:02], ~N[2026-07-15 12:23:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:23:02.840] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47217, oid: "org-id-placeholder", upload_time: "2026-07-15T12:23:01Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:02], updated_at: ~N[2026-07-15 12:23:02]} [2026-07-15 12:23:02.841] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => 28} [2026-07-15 12:23:02.890] [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-15T12:23:01Z", "28", "battery", 47217, ~N[2026-07-15 12:23:02], ~N[2026-07-15 12:23:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:02.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406640, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:23:01Z", message: nil, status_log_id: 47217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:02], updated_at: ~N[2026-07-15 12:23:02]}} [2026-07-15 12:23:02.890] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:23:01Z", "value" => 50} [2026-07-15 12:23:02.927] [DEBUG] QUERY OK db=36.8ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:23:01Z", "50", "memory", 47217, ~N[2026-07-15 12:23:02], ~N[2026-07-15 12:23:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:02.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406641, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:23:01Z", message: "Normal", status_log_id: 47217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:02], updated_at: ~N[2026-07-15 12:23:02]}} [2026-07-15 12:23:02.928] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => 50} [2026-07-15 12:23:02.987] [DEBUG] QUERY OK db=58.0ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:23:01Z", "50", "cpu", 47217, ~N[2026-07-15 12:23:02], ~N[2026-07-15 12:23:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:02.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406642, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:23:01Z", message: nil, status_log_id: 47217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:02], updated_at: ~N[2026-07-15 12:23:02]}} [2026-07-15 12:23:02.989] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:23:01Z", "value" => "online"} [2026-07-15 12:23:03.047] [DEBUG] QUERY OK db=57.5ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:23:01Z", "online", "network", 47217, ~N[2026-07-15 12:23:02], ~N[2026-07-15 12:23:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:03.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406643, itemkey: "network", value: "online", timestamp: "2026-07-15T12:23:01Z", message: nil, status_log_id: 47217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:02], updated_at: ~N[2026-07-15 12:23:02]}} [2026-07-15 12:23:03.047] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:23:03.048] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:23:03.068] [DEBUG] QUERY OK source="tms_terminals" db=8.5ms idle=72.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-15 12:23:03.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:23:03.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms queue=2.0ms idle=34.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:03.102] [DEBUG] QUERY OK source="tms_terminal_status_items" db=5.3ms queue=3.6ms idle=25.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:06.735] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:23:06.735] [INFO ] Incoming JSON payload: {"oid":"57f9dbee-2ebb-43c1-ad68-1e871c8767d9","sn":"98250623730001","uploadTime":"2026-07-15T03:32:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:32:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:32: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:23:06.736] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "57f9dbee-2ebb-43c1-ad68-1e871c8767d9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:32:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:32:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:32:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:32:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:32:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:32:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:32:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:32: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:32:56Z", "vendor" => "morefun"} [2026-07-15 12:23:06.743] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:23:06.743] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:23:06.743] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:23:06.747] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=1.3ms idle=463.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-15 12:23:06.748] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=234.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-15 12:23:06.748] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:23:06.751] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:23:06.752] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:23:06.797] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:23:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:23:06.799] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:23:06.803] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=48.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:23:06.829] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:23:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:23:06.884] [DEBUG] QUERY OK db=54.1ms idle=26.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "57f9dbee-2ebb-43c1-ad68-1e871c8767d9", "2026-07-15T03:32:56Z", ~N[2026-07-15 12:23:06], ~N[2026-07-15 12:23:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:23:06.887] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47218, oid: "57f9dbee-2ebb-43c1-ad68-1e871c8767d9", upload_time: "2026-07-15T03:32:56Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:06], updated_at: ~N[2026-07-15 12:23:06]} [2026-07-15 12:23:06.887] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:32:56Z", "value" => "morefun"} [2026-07-15 12:23:06.931] [DEBUG] QUERY OK db=43.5ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "morefun", "vendor", 47218, ~N[2026-07-15 12:23:06], ~N[2026-07-15 12:23:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:06.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406644, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:06], updated_at: ~N[2026-07-15 12:23:06]}} [2026-07-15 12:23:06.931] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:32:56Z", "value" => "kiosk_launcher"} [2026-07-15 12:23:06.969] [DEBUG] QUERY OK db=38.0ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "kiosk_launcher", "model", 47218, ~N[2026-07-15 12:23:06], ~N[2026-07-15 12:23:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:06.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406645, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:06], updated_at: ~N[2026-07-15 12:23:06]}} [2026-07-15 12:23:06.971] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:32:56Z", "value" => "1.0"} [2026-07-15 12:23:07.039] [DEBUG] QUERY OK db=65.7ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "1.0", "app_version", 47218, ~N[2026-07-15 12:23:06], ~N[2026-07-15 12:23:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406646, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:06], updated_at: ~N[2026-07-15 12:23:06]}} [2026-07-15 12:23:07.039] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:32:56Z", "value" => "13"} [2026-07-15 12:23:07.081] [DEBUG] QUERY OK db=41.5ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "13", "android_version", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406647, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.082] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "934"} [2026-07-15 12:23:07.145] [DEBUG] QUERY OK db=59.7ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "934", "ram_free_mb", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406648, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.145] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:32:56Z", "value" => "WIFI"} [2026-07-15 12:23:07.200] [DEBUG] QUERY OK db=54.1ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "WIFI", "network_type", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406649, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.200] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:32:56Z", "value" => "true"} [2026-07-15 12:23:07.246] [DEBUG] QUERY OK db=45.3ms queue=0.3ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "true", "kiosk_active", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406650, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.246] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:32:56Z", "value" => ""} [2026-07-15 12:23:07.292] [DEBUG] QUERY OK db=45.2ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:32:56Z", "sim_operator", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406651, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.292] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"} [2026-07-15 12:23:07.333] [DEBUG] QUERY OK db=40.0ms idle=9.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "UNKNOWN", "sim_number", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406652, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.333] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"} [2026-07-15 12:23:07.381] [DEBUG] QUERY OK db=46.9ms queue=0.5ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "UNKNOWN", "sim_iccid", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406653, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.382] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"} [2026-07-15 12:23:07.432] [DEBUG] QUERY OK db=50.4ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "UNKNOWN", "sim_imsi", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406654, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.433] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"} [2026-07-15 12:23:07.489] [DEBUG] QUERY OK db=55.6ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "UNKNOWN", "sim_iccid2", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406655, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.490] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:32:56Z", "value" => "UNKNOWN"} [2026-07-15 12:23:07.545] [DEBUG] QUERY OK db=54.1ms queue=1.0ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "UNKNOWN", "sim_imsi2", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406656, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.546] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "14"} [2026-07-15 12:23:07.572] [DEBUG] QUERY OK db=26.2ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "14", "data_usage_mb", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406657, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.576] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:32:56Z", "value" => "0"} [2026-07-15 12:23:07.648] [DEBUG] QUERY OK db=72.2ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32:56Z", "0", "mobile_data_mb", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406658, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.649] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:32: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:23:07.730] [DEBUG] QUERY OK db=80.5ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:32: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47218, ~N[2026-07-15 12:23:07], ~N[2026-07-15 12:23:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:07.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406659, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:32:56Z", message: nil, status_log_id: 47218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:07], updated_at: ~N[2026-07-15 12:23:07]}} [2026-07-15 12:23:07.737] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=86.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-15 12:23:07.747] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:23:07.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms queue=1.4ms idle=18.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:07.762] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=2.3ms idle=22.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:36.844] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:23:36.844] [INFO ] Incoming JSON payload: {"oid":"43374f7d-622b-4a0f-bd42-c25d80363490","sn":"98250623730001","uploadTime":"2026-07-15T03:33:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:33:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:23:36.846] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "43374f7d-622b-4a0f-bd42-c25d80363490", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:33:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:33:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:33:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:33:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:33:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:33:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:33:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:33:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:33:26Z", "vendor" => "morefun"} [2026-07-15 12:23:36.846] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:23:36.846] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:23:36.846] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:23:36.847] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=1334.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-15 12:23:36.848] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=419.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-15 12:23:36.848] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:23:36.849] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:23:36.849] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:23:36.904] [DEBUG] QUERY OK source="tms_terminals" db=54.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:23:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:23:36.904] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:23:36.905] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=55.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:23:36.932] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:23:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:23:36.990] [DEBUG] QUERY OK db=57.4ms idle=27.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "43374f7d-622b-4a0f-bd42-c25d80363490", "2026-07-15T03:33:26Z", ~N[2026-07-15 12:23:36], ~N[2026-07-15 12:23:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:23:36.990] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47219, oid: "43374f7d-622b-4a0f-bd42-c25d80363490", upload_time: "2026-07-15T03:33:26Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:36], updated_at: ~N[2026-07-15 12:23:36]} [2026-07-15 12:23:36.990] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:33:26Z", "value" => "morefun"} [2026-07-15 12:23:37.085] [DEBUG] QUERY OK db=94.0ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "morefun", "vendor", 47219, ~N[2026-07-15 12:23:36], ~N[2026-07-15 12:23:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406660, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:36], updated_at: ~N[2026-07-15 12:23:36]}} [2026-07-15 12:23:37.085] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:33:26Z", "value" => "kiosk_launcher"} [2026-07-15 12:23:37.123] [DEBUG] QUERY OK db=36.8ms idle=95.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "kiosk_launcher", "model", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406661, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.123] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:33:26Z", "value" => "1.0"} [2026-07-15 12:23:37.187] [DEBUG] QUERY OK db=63.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "1.0", "app_version", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406662, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.187] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:33:26Z", "value" => "13"} [2026-07-15 12:23:37.232] [DEBUG] QUERY OK db=44.2ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "13", "android_version", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406663, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.232] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "933"} [2026-07-15 12:23:37.278] [DEBUG] QUERY OK db=45.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "933", "ram_free_mb", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406664, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.278] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:33:26Z", "value" => "WIFI"} [2026-07-15 12:23:37.323] [DEBUG] QUERY OK db=43.9ms queue=0.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "WIFI", "network_type", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406665, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.323] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:33:26Z", "value" => "true"} [2026-07-15 12:23:37.381] [DEBUG] QUERY OK db=57.3ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "true", "kiosk_active", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406666, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:33:26Z", "value" => ""} [2026-07-15 12:23:37.441] [DEBUG] QUERY OK db=58.2ms queue=0.1ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:33:26Z", "sim_operator", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406667, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.441] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"} [2026-07-15 12:23:37.490] [DEBUG] QUERY OK db=47.7ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "UNKNOWN", "sim_number", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406668, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.490] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"} [2026-07-15 12:23:37.546] [DEBUG] QUERY OK db=55.4ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "UNKNOWN", "sim_iccid", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406669, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.546] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"} [2026-07-15 12:23:37.588] [DEBUG] QUERY OK db=41.4ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "UNKNOWN", "sim_imsi", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406670, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.588] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"} [2026-07-15 12:23:37.643] [DEBUG] QUERY OK db=53.7ms queue=0.3ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "UNKNOWN", "sim_iccid2", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406671, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.644] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:33:26Z", "value" => "UNKNOWN"} [2026-07-15 12:23:37.686] [DEBUG] QUERY OK db=42.3ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "UNKNOWN", "sim_imsi2", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406672, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.687] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "14"} [2026-07-15 12:23:37.730] [DEBUG] QUERY OK db=42.5ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "14", "data_usage_mb", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406673, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.730] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:33:26Z", "value" => "0"} [2026-07-15 12:23:37.804] [DEBUG] QUERY OK db=73.6ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "0", "mobile_data_mb", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406674, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.805] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:33:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:23:37.862] [DEBUG] QUERY OK db=56.3ms idle=75.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47219, ~N[2026-07-15 12:23:37], ~N[2026-07-15 12:23:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:23:37.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406675, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:33:26Z", message: nil, status_log_id: 47219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:23:37], updated_at: ~N[2026-07-15 12:23:37]}} [2026-07-15 12:23:37.865] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=59.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-15 12:23:37.870] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:23:37.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:37.877] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=0.7ms idle=10.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:23:51.905] [INFO ] Running offline device check... [2026-07-15 12:23:51.906] [INFO ] Starting offline device check... [2026-07-15 12:23:51.908] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=433.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:23:51.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=394.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:23:51.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=7.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.927] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:51.990] [DEBUG] QUERY OK source="tms_terminals" db=42.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:23:51], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:23:51.990] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:23:51.991] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=43.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:23:51.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.2ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.085] [DEBUG] QUERY OK source="tms_terminals" db=52.9ms idle=15.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:23:52], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:23:52.085] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:23:52.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=53.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:23:52.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.101] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.123] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.125] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:23:52.127] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:23:52.127] [INFO ] Offline device check completed successfully [2026-07-15 12:24:06.947] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:24:06.947] [INFO ] Incoming JSON payload: {"oid":"02ce069b-69ae-4729-9364-a32e40e14a82","sn":"98250623730001","uploadTime":"2026-07-15T03:33:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:33:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:33: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:24:06.948] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "02ce069b-69ae-4729-9364-a32e40e14a82", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:33:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:33:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:33:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:33:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:33:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:33:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:33:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:33: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:33:57Z", "vendor" => "morefun"} [2026-07-15 12:24:06.948] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:24:06.948] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:24:06.948] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:24:06.950] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.5ms idle=430.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-15 12:24:06.951] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=413.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-15 12:24:06.951] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:24:06.953] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:24:06.953] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:24:07.002] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:24:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:24:07.003] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:24:07.004] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=49.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:24:07.055] [DEBUG] QUERY OK source="tms_terminals" db=50.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:24:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:24:07.092] [DEBUG] QUERY OK db=36.3ms idle=51.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "02ce069b-69ae-4729-9364-a32e40e14a82", "2026-07-15T03:33:57Z", ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:24:07.092] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47220, oid: "02ce069b-69ae-4729-9364-a32e40e14a82", upload_time: "2026-07-15T03:33:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]} [2026-07-15 12:24:07.092] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:33:57Z", "value" => "morefun"} [2026-07-15 12:24:07.146] [DEBUG] QUERY OK db=53.2ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "morefun", "vendor", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406676, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.146] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:33:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:24:07.174] [DEBUG] QUERY OK db=27.6ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "kiosk_launcher", "model", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406677, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.175] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:33:57Z", "value" => "1.0"} [2026-07-15 12:24:07.259] [DEBUG] QUERY OK db=84.1ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "1.0", "app_version", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406678, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.260] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:33:57Z", "value" => "13"} [2026-07-15 12:24:07.306] [DEBUG] QUERY OK db=44.7ms idle=86.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "13", "android_version", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406679, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.307] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "932"} [2026-07-15 12:24:07.348] [DEBUG] QUERY OK db=40.7ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "932", "ram_free_mb", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406680, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.349] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:33:57Z", "value" => "WIFI"} [2026-07-15 12:24:07.382] [DEBUG] QUERY OK db=33.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "WIFI", "network_type", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406681, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.383] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:33:57Z", "value" => "true"} [2026-07-15 12:24:07.438] [DEBUG] QUERY OK db=54.9ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "true", "kiosk_active", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406682, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.439] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:33:57Z", "value" => ""} [2026-07-15 12:24:07.494] [DEBUG] QUERY OK db=55.1ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:33:57Z", "sim_operator", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406683, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.495] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"} [2026-07-15 12:24:07.533] [DEBUG] QUERY OK db=37.2ms 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-15T03:33:57Z", "UNKNOWN", "sim_number", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406684, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.534] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"} [2026-07-15 12:24:07.588] [DEBUG] QUERY OK db=53.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "UNKNOWN", "sim_iccid", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406685, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.589] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"} [2026-07-15 12:24:07.623] [DEBUG] QUERY OK db=33.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "UNKNOWN", "sim_imsi", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406686, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.623] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"} [2026-07-15 12:24:07.675] [DEBUG] QUERY OK db=51.1ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "UNKNOWN", "sim_iccid2", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406687, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.682] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:33:57Z", "value" => "UNKNOWN"} [2026-07-15 12:24:07.733] [DEBUG] QUERY OK db=50.8ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "UNKNOWN", "sim_imsi2", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406688, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.734] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "14"} [2026-07-15 12:24:07.776] [DEBUG] QUERY OK db=41.7ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "14", "data_usage_mb", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406689, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.777] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:33:57Z", "value" => "0"} [2026-07-15 12:24:07.839] [DEBUG] QUERY OK db=60.9ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33:57Z", "0", "mobile_data_mb", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406690, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.840] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:33: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:24:07.894] [DEBUG] QUERY OK db=52.8ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:33: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47220, ~N[2026-07-15 12:24:07], ~N[2026-07-15 12:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:07.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406691, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:33:57Z", message: nil, status_log_id: 47220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:07], updated_at: ~N[2026-07-15 12:24:07]}} [2026-07-15 12:24:07.897] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=56.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-15 12:24:07.904] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:24:07.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:24:07.912] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.6ms idle=14.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:24:36.913] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:24:36.913] [INFO ] Incoming JSON payload: {"oid":"1aa497d4-bd57-4688-ad2f-60506a52f70a","sn":"98250623730001","uploadTime":"2026-07-15T03:34:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:34:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:24:36.915] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1aa497d4-bd57-4688-ad2f-60506a52f70a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:34:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:34:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:34:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:34:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:34:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:34:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:34:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:34:27Z", "vendor" => "morefun"} [2026-07-15 12:24:36.917] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:24:36.920] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:24:36.921] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:24:36.922] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=1289.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-15 12:24:36.923] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=287.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-15 12:24:36.923] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:24:36.924] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:24:36.925] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:24:36.971] [DEBUG] QUERY OK source="tms_terminals" db=43.5ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:24:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:24:36.972] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:24:36.976] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=49.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:24:37.081] [DEBUG] QUERY OK source="tms_terminals" db=104.6ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:24:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:24:37.127] [DEBUG] QUERY OK db=44.6ms idle=106.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "1aa497d4-bd57-4688-ad2f-60506a52f70a", "2026-07-15T03:34:27Z", ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:24:37.128] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47221, oid: "1aa497d4-bd57-4688-ad2f-60506a52f70a", upload_time: "2026-07-15T03:34:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]} [2026-07-15 12:24:37.132] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:34:27Z", "value" => "morefun"} [2026-07-15 12:24:37.185] [DEBUG] QUERY OK db=52.2ms queue=0.1ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "morefun", "vendor", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406692, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.185] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:34:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:24:37.225] [DEBUG] QUERY OK db=39.5ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "kiosk_launcher", "model", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406693, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.226] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:34:27Z", "value" => "1.0"} [2026-07-15 12:24:37.271] [DEBUG] QUERY OK db=45.1ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "1.0", "app_version", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406694, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.273] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:34:27Z", "value" => "13"} [2026-07-15 12:24:37.336] [DEBUG] QUERY OK db=62.9ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "13", "android_version", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406695, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.336] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "937"} [2026-07-15 12:24:37.384] [DEBUG] QUERY OK db=45.7ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "937", "ram_free_mb", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406696, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.384] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:34:27Z", "value" => "WIFI"} [2026-07-15 12:24:37.448] [DEBUG] QUERY OK db=63.9ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "WIFI", "network_type", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406697, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.449] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:34:27Z", "value" => "true"} [2026-07-15 12:24:37.488] [DEBUG] QUERY OK db=36.5ms queue=0.1ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "true", "kiosk_active", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406698, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.488] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:34:27Z", "value" => ""} [2026-07-15 12:24:37.566] [DEBUG] QUERY OK db=74.5ms queue=2.1ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:34:27Z", "sim_operator", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406699, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.566] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"} [2026-07-15 12:24:37.628] [DEBUG] QUERY OK db=61.0ms idle=78.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "UNKNOWN", "sim_number", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406700, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.628] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"} [2026-07-15 12:24:37.693] [DEBUG] QUERY OK db=64.0ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "UNKNOWN", "sim_iccid", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406701, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.695] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"} [2026-07-15 12:24:37.726] [DEBUG] QUERY OK db=30.9ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "UNKNOWN", "sim_imsi", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406702, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.727] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"} [2026-07-15 12:24:37.761] [DEBUG] QUERY OK db=33.5ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "UNKNOWN", "sim_iccid2", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406703, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.764] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:34:27Z", "value" => "UNKNOWN"} [2026-07-15 12:24:37.830] [DEBUG] QUERY OK db=65.7ms 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-15T03:34:27Z", "UNKNOWN", "sim_imsi2", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406704, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.830] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "14"} [2026-07-15 12:24:37.888] [DEBUG] QUERY OK db=57.6ms queue=0.1ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "14", "data_usage_mb", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406705, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.889] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:34:27Z", "value" => "0"} [2026-07-15 12:24:37.946] [DEBUG] QUERY OK db=56.3ms queue=0.3ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:27Z", "0", "mobile_data_mb", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:37.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406706, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:37.947] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:24:38.027] [DEBUG] QUERY OK db=79.5ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47221, ~N[2026-07-15 12:24:37], ~N[2026-07-15 12:24:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:24:38.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406707, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:34:27Z", message: nil, status_log_id: 47221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:24:37], updated_at: ~N[2026-07-15 12:24:37]}} [2026-07-15 12:24:38.032] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=85.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-15 12:24:38.041] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:24:38.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=15.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:24:38.053] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=2.3ms idle=17.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:07.158] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:25:07.158] [INFO ] Incoming JSON payload: {"oid":"f67c724e-65cf-4980-860c-cb2045e79602","sn":"98250623730001","uploadTime":"2026-07-15T03:34:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:34:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:25:07.160] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f67c724e-65cf-4980-860c-cb2045e79602", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:34:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:34:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:34:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:34:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:34:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:34:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:34:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:34:57Z", "vendor" => "morefun"} [2026-07-15 12:25:07.160] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:25:07.160] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:25:07.161] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:25:07.162] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=640.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-15 12:25:07.165] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=444.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-15 12:25:07.165] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:25:07.169] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=0.3ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:25:07.169] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:25:07.221] [DEBUG] QUERY OK source="tms_terminals" db=51.1ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:25:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:25:07.221] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:25:07.223] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=52.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:25:07.264] [DEBUG] QUERY OK source="tms_terminals" db=41.1ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:25:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:25:07.325] [DEBUG] QUERY OK db=59.1ms queue=0.6ms idle=41.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "f67c724e-65cf-4980-860c-cb2045e79602", "2026-07-15T03:34:57Z", ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:25:07.325] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47222, oid: "f67c724e-65cf-4980-860c-cb2045e79602", upload_time: "2026-07-15T03:34:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]} [2026-07-15 12:25:07.325] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:34:57Z", "value" => "morefun"} [2026-07-15 12:25:07.366] [DEBUG] QUERY OK db=38.7ms queue=1.2ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "morefun", "vendor", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406708, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.367] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:34:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:25:07.427] [DEBUG] QUERY OK db=58.5ms queue=0.5ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "kiosk_launcher", "model", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406709, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.427] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:34:57Z", "value" => "1.0"} [2026-07-15 12:25:07.476] [DEBUG] QUERY OK db=48.6ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "1.0", "app_version", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406710, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.478] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:34:57Z", "value" => "13"} [2026-07-15 12:25:07.521] [DEBUG] QUERY OK db=42.3ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "13", "android_version", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406711, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.522] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "938"} [2026-07-15 12:25:07.572] [DEBUG] QUERY OK db=50.1ms queue=0.1ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "938", "ram_free_mb", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406712, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.574] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:34:57Z", "value" => "WIFI"} [2026-07-15 12:25:07.620] [DEBUG] QUERY OK db=44.3ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "WIFI", "network_type", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406713, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.621] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:34:57Z", "value" => "true"} [2026-07-15 12:25:07.693] [DEBUG] QUERY OK db=69.6ms queue=0.4ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "true", "kiosk_active", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406714, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.695] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:34:57Z", "value" => ""} [2026-07-15 12:25:07.757] [DEBUG] QUERY OK db=60.7ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:34:57Z", "sim_operator", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406715, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.758] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"} [2026-07-15 12:25:07.788] [DEBUG] QUERY OK db=29.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "UNKNOWN", "sim_number", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406716, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.790] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"} [2026-07-15 12:25:07.844] [DEBUG] QUERY OK db=52.4ms queue=0.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "UNKNOWN", "sim_iccid", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406717, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.844] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"} [2026-07-15 12:25:07.887] [DEBUG] QUERY OK db=42.6ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "UNKNOWN", "sim_imsi", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406718, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.888] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"} [2026-07-15 12:25:07.932] [DEBUG] QUERY OK db=43.2ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "UNKNOWN", "sim_iccid2", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406719, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.932] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:34:57Z", "value" => "UNKNOWN"} [2026-07-15 12:25:07.972] [DEBUG] QUERY OK db=40.0ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "UNKNOWN", "sim_imsi2", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:07.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406720, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:07.973] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "14"} [2026-07-15 12:25:08.042] [DEBUG] QUERY OK db=68.8ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "14", "data_usage_mb", 47222, ~N[2026-07-15 12:25:07], ~N[2026-07-15 12:25:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:08.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406721, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:07], updated_at: ~N[2026-07-15 12:25:07]}} [2026-07-15 12:25:08.044] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:34:57Z", "value" => "0"} [2026-07-15 12:25:08.096] [DEBUG] QUERY OK db=51.8ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34:57Z", "0", "mobile_data_mb", 47222, ~N[2026-07-15 12:25:08], ~N[2026-07-15 12:25:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:08.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406722, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:08], updated_at: ~N[2026-07-15 12:25:08]}} [2026-07-15 12:25:08.097] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:25:08.188] [DEBUG] QUERY OK db=89.3ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47222, ~N[2026-07-15 12:25:08], ~N[2026-07-15 12:25:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:08.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406723, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:34:57Z", message: nil, status_log_id: 47222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:08], updated_at: ~N[2026-07-15 12:25:08]}} [2026-07-15 12:25:08.190] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=92.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-15 12:25:08.195] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:25:08.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:08.217] [DEBUG] QUERY OK source="tms_terminal_status_items" db=3.8ms queue=8.9ms idle=14.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:37.248] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:25:37.248] [INFO ] Incoming JSON payload: {"oid":"284a130c-120f-45dc-9acb-baed15a14566","sn":"98250623730001","uploadTime":"2026-07-15T03:35:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"ram_free_mb","value":"939","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:35:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:25:37.249] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "284a130c-120f-45dc-9acb-baed15a14566", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:35:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:35:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:35:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:35:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "939"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:35:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:35:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:35:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:35:27Z", "vendor" => "morefun"} [2026-07-15 12:25:37.249] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:25:37.250] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:25:37.250] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:25:37.253] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=728.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-15 12:25:37.254] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=451.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-15 12:25:37.254] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:25:37.255] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:25:37.255] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:25:37.313] [DEBUG] QUERY OK source="tms_terminals" db=57.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:25:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:25:37.313] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:25:37.314] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=58.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:25:37.357] [DEBUG] QUERY OK source="tms_terminals" db=42.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:25:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:25:37.403] [DEBUG] QUERY OK db=45.2ms idle=43.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "284a130c-120f-45dc-9acb-baed15a14566", "2026-07-15T03:35:27Z", ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:25:37.403] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47223, oid: "284a130c-120f-45dc-9acb-baed15a14566", upload_time: "2026-07-15T03:35:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]} [2026-07-15 12:25:37.403] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:35:27Z", "value" => "morefun"} [2026-07-15 12:25:37.445] [DEBUG] QUERY OK db=41.4ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "morefun", "vendor", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.446] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406724, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.446] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:35:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:25:37.501] [DEBUG] QUERY OK db=54.7ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "kiosk_launcher", "model", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406725, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.501] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:35:27Z", "value" => "1.0"} [2026-07-15 12:25:37.536] [DEBUG] QUERY OK db=33.6ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "1.0", "app_version", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406726, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.536] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:35:27Z", "value" => "13"} [2026-07-15 12:25:37.589] [DEBUG] QUERY OK db=52.4ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "13", "android_version", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406727, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.590] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "939"} [2026-07-15 12:25:37.620] [DEBUG] QUERY OK db=29.0ms queue=0.1ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "939", "ram_free_mb", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406728, itemkey: "ram_free_mb", value: "939", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.620] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:35:27Z", "value" => "WIFI"} [2026-07-15 12:25:37.689] [DEBUG] QUERY OK db=68.0ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "WIFI", "network_type", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406729, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.689] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:35:27Z", "value" => "true"} [2026-07-15 12:25:37.741] [DEBUG] QUERY OK db=51.5ms queue=0.1ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "true", "kiosk_active", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406730, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.742] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:35:27Z", "value" => ""} [2026-07-15 12:25:37.775] [DEBUG] QUERY OK db=32.4ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:35:27Z", "sim_operator", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406731, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.775] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"} [2026-07-15 12:25:37.834] [DEBUG] QUERY OK db=57.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "UNKNOWN", "sim_number", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406732, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"} [2026-07-15 12:25:37.895] [DEBUG] QUERY OK db=58.9ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "UNKNOWN", "sim_iccid", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406733, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.895] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"} [2026-07-15 12:25:37.970] [DEBUG] QUERY OK db=74.3ms queue=0.2ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "UNKNOWN", "sim_imsi", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:37.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406734, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:37.970] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"} [2026-07-15 12:25:38.034] [DEBUG] QUERY OK db=63.7ms idle=75.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "UNKNOWN", "sim_iccid2", 47223, ~N[2026-07-15 12:25:37], ~N[2026-07-15 12:25:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:38.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406735, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:37], updated_at: ~N[2026-07-15 12:25:37]}} [2026-07-15 12:25:38.035] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:35:27Z", "value" => "UNKNOWN"} [2026-07-15 12:25:38.097] [DEBUG] QUERY OK db=61.5ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "UNKNOWN", "sim_imsi2", 47223, ~N[2026-07-15 12:25:38], ~N[2026-07-15 12:25:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:38.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406736, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:38], updated_at: ~N[2026-07-15 12:25:38]}} [2026-07-15 12:25:38.097] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "14"} [2026-07-15 12:25:38.140] [DEBUG] QUERY OK db=42.2ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "14", "data_usage_mb", 47223, ~N[2026-07-15 12:25:38], ~N[2026-07-15 12:25:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:38.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406737, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:38], updated_at: ~N[2026-07-15 12:25:38]}} [2026-07-15 12:25:38.140] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:35:27Z", "value" => "0"} [2026-07-15 12:25:38.183] [DEBUG] QUERY OK db=42.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:27Z", "0", "mobile_data_mb", 47223, ~N[2026-07-15 12:25:38], ~N[2026-07-15 12:25:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:38.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406738, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:38], updated_at: ~N[2026-07-15 12:25:38]}} [2026-07-15 12:25:38.184] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:25:38.227] [DEBUG] QUERY OK db=42.4ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47223, ~N[2026-07-15 12:25:38], ~N[2026-07-15 12:25:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:38.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406739, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:35:27Z", message: nil, status_log_id: 47223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:38], updated_at: ~N[2026-07-15 12:25:38]}} [2026-07-15 12:25:38.230] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=45.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:25:38.235] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:20:43]}, %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-15 12:25:38.241] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:38.243] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.8ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43757, 43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:54.330] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:25:54.330] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:25:51Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:25:51Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:25:51Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:25:51Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:25:51Z","message":""}]} [2026-07-15 12:25:54.330] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:25:51Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:25:51Z"} [2026-07-15 12:25:54.331] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:25:54.333] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.3ms idle=873.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:25:54.333] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:25:54.377] [DEBUG] QUERY OK source="tms_terminals" db=43.8ms idle=489.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:25:54], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:25:54.380] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms 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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:25:54.445] [DEBUG] QUERY OK source="tms_terminals" db=63.9ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:25:54], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:25:54.508] [DEBUG] QUERY OK db=63.2ms idle=64.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:25:51Z", ~N[2026-07-15 12:25:54], ~N[2026-07-15 12:25:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:25:54.509] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47224, oid: "org-id-placeholder", upload_time: "2026-07-15T16:25:51Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:54], updated_at: ~N[2026-07-15 12:25:54]} [2026-07-15 12:25:54.509] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => 29} [2026-07-15 12:25:54.565] [DEBUG] QUERY OK db=55.6ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:25:51Z", "29", "battery", 47224, ~N[2026-07-15 12:25:54], ~N[2026-07-15 12:25:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:54.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406740, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:25:51Z", message: nil, status_log_id: 47224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:54], updated_at: ~N[2026-07-15 12:25:54]}} [2026-07-15 12:25:54.565] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:25:51Z", "value" => 50} [2026-07-15 12:25:54.602] [DEBUG] QUERY OK db=36.8ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:25:51Z", "50", "memory", 47224, ~N[2026-07-15 12:25:54], ~N[2026-07-15 12:25:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:54.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406741, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:25:51Z", message: "Normal", status_log_id: 47224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:54], updated_at: ~N[2026-07-15 12:25:54]}} [2026-07-15 12:25:54.603] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => 50} [2026-07-15 12:25:54.661] [DEBUG] QUERY OK db=57.2ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:25:51Z", "50", "cpu", 47224, ~N[2026-07-15 12:25:54], ~N[2026-07-15 12:25:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:54.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406742, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:25:51Z", message: nil, status_log_id: 47224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:54], updated_at: ~N[2026-07-15 12:25:54]}} [2026-07-15 12:25:54.661] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:25:51Z", "value" => "online"} [2026-07-15 12:25:54.703] [DEBUG] QUERY OK db=41.9ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:25:51Z", "online", "network", 47224, ~N[2026-07-15 12:25:54], ~N[2026-07-15 12:25:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:25:54.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406743, itemkey: "network", value: "online", timestamp: "2026-07-15T16:25:51Z", message: nil, status_log_id: 47224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:25:54], updated_at: ~N[2026-07-15 12:25:54]}} [2026-07-15 12:25:54.704] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:25:54.705] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:25:54.710] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=47.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:25:54.716] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:25:54.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=13.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:25:54.722] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.4ms idle=10.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:26:07.383] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:26:07.383] [INFO ] Incoming JSON payload: {"oid":"e45829f4-4960-4d5a-b092-b82e9ee1572c","sn":"98250623730001","uploadTime":"2026-07-15T03:35:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"ram_free_mb","value":"940","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:35:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:26:07.384] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e45829f4-4960-4d5a-b092-b82e9ee1572c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:35:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:35:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:35:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:35:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "940"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:35:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:35:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:35:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:35:57Z", "vendor" => "morefun"} [2026-07-15 12:26:07.384] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:26:07.384] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:26:07.384] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:26:07.385] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=858.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-15 12:26:07.386] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=505.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-15 12:26:07.387] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:26:07.387] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:26:07.387] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:26:07.424] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms queue=0.1ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:26:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:26:07.424] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:26:07.425] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=37.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:26:07.485] [DEBUG] QUERY OK source="tms_terminals" db=59.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:26:07], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:26:07.534] [DEBUG] QUERY OK db=47.7ms queue=0.1ms idle=60.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e45829f4-4960-4d5a-b092-b82e9ee1572c", "2026-07-15T03:35:57Z", ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:26:07.534] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47225, oid: "e45829f4-4960-4d5a-b092-b82e9ee1572c", upload_time: "2026-07-15T03:35:57Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]} [2026-07-15 12:26:07.534] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:35:57Z", "value" => "morefun"} [2026-07-15 12:26:07.590] [DEBUG] QUERY OK db=55.8ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "morefun", "vendor", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406744, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.591] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:35:57Z", "value" => "kiosk_launcher"} [2026-07-15 12:26:07.632] [DEBUG] QUERY OK db=41.1ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "kiosk_launcher", "model", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406745, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.633] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:35:57Z", "value" => "1.0"} [2026-07-15 12:26:07.681] [DEBUG] QUERY OK db=47.5ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "1.0", "app_version", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406746, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.681] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:35:57Z", "value" => "13"} [2026-07-15 12:26:07.713] [DEBUG] QUERY OK db=31.1ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "13", "android_version", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406747, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.713] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "940"} [2026-07-15 12:26:07.772] [DEBUG] QUERY OK db=57.9ms queue=0.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "940", "ram_free_mb", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406748, itemkey: "ram_free_mb", value: "940", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.772] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:35:57Z", "value" => "WIFI"} [2026-07-15 12:26:07.805] [DEBUG] QUERY OK db=32.4ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "WIFI", "network_type", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406749, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.806] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:35:57Z", "value" => "true"} [2026-07-15 12:26:07.860] [DEBUG] QUERY OK db=53.6ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "true", "kiosk_active", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406750, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.863] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:35:57Z", "value" => ""} [2026-07-15 12:26:07.912] [DEBUG] QUERY OK db=48.4ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:35:57Z", "sim_operator", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406751, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.912] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"} [2026-07-15 12:26:07.961] [DEBUG] QUERY OK db=48.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "UNKNOWN", "sim_number", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:07.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406752, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:07.962] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"} [2026-07-15 12:26:08.018] [DEBUG] QUERY OK db=52.1ms queue=0.2ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "UNKNOWN", "sim_iccid", 47225, ~N[2026-07-15 12:26:07], ~N[2026-07-15 12:26:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406753, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:07], updated_at: ~N[2026-07-15 12:26:07]}} [2026-07-15 12:26:08.018] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"} [2026-07-15 12:26:08.071] [DEBUG] QUERY OK db=52.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "UNKNOWN", "sim_imsi", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406754, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.071] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"} [2026-07-15 12:26:08.104] [DEBUG] QUERY OK db=31.6ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "UNKNOWN", "sim_iccid2", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406755, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.104] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:35:57Z", "value" => "UNKNOWN"} [2026-07-15 12:26:08.139] [DEBUG] QUERY OK db=34.5ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "UNKNOWN", "sim_imsi2", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406756, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.139] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "14"} [2026-07-15 12:26:08.164] [DEBUG] QUERY OK db=24.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "14", "data_usage_mb", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406757, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.164] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:35:57Z", "value" => "0"} [2026-07-15 12:26:08.217] [DEBUG] QUERY OK db=52.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35:57Z", "0", "mobile_data_mb", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406758, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.220] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:26:08.274] [DEBUG] QUERY OK db=53.4ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:35: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47225, ~N[2026-07-15 12:26:08], ~N[2026-07-15 12:26:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:08.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406759, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:35:57Z", message: nil, status_log_id: 47225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:08], updated_at: ~N[2026-07-15 12:26:08]}} [2026-07-15 12:26:08.278] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=59.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-15 12:26:08.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:26:08.297] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:26:08.298] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.5ms idle=19.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:26:37.786] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:26:37.786] [INFO ] Incoming JSON payload: {"oid":"169ae6e5-2a9f-435d-82dd-fe3fedb73d67","sn":"98250623730001","uploadTime":"2026-07-15T03:36:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"ram_free_mb","value":"942","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:36:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:36: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:26:37.787] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "169ae6e5-2a9f-435d-82dd-fe3fedb73d67", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:36:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:36:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:36:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:36:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "942"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:36:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:36:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:36:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:36: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:36:27Z", "vendor" => "morefun"} [2026-07-15 12:26:37.789] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:26:37.789] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:26:37.789] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:26:37.790] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=947.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-15 12:26:37.791] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=810.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-15 12:26:37.791] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:26:37.792] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:26:37.792] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:26:37.843] [DEBUG] QUERY OK source="tms_terminals" db=50.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:26:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:26:37.843] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:26:37.844] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=51.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:26:37.896] [DEBUG] QUERY OK source="tms_terminals" db=50.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:26:37], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:26:37.970] [DEBUG] QUERY OK db=74.1ms queue=0.1ms idle=51.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "169ae6e5-2a9f-435d-82dd-fe3fedb73d67", "2026-07-15T03:36:27Z", ~N[2026-07-15 12:26:37], ~N[2026-07-15 12:26:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:26:37.971] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47226, oid: "169ae6e5-2a9f-435d-82dd-fe3fedb73d67", upload_time: "2026-07-15T03:36:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:37], updated_at: ~N[2026-07-15 12:26:37]} [2026-07-15 12:26:37.971] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:36:27Z", "value" => "morefun"} [2026-07-15 12:26:38.005] [DEBUG] QUERY OK db=34.1ms idle=75.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "morefun", "vendor", 47226, ~N[2026-07-15 12:26:37], ~N[2026-07-15 12:26:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406760, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:37], updated_at: ~N[2026-07-15 12:26:37]}} [2026-07-15 12:26:38.006] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:36:27Z", "value" => "kiosk_launcher"} [2026-07-15 12:26:38.051] [DEBUG] QUERY OK db=44.5ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "kiosk_launcher", "model", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406761, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.052] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:36:27Z", "value" => "1.0"} [2026-07-15 12:26:38.109] [DEBUG] QUERY OK db=56.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "1.0", "app_version", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406762, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.109] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:36:27Z", "value" => "13"} [2026-07-15 12:26:38.150] [DEBUG] QUERY OK db=40.7ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "13", "android_version", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406763, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.151] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "942"} [2026-07-15 12:26:38.191] [DEBUG] QUERY OK db=39.0ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "942", "ram_free_mb", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406764, itemkey: "ram_free_mb", value: "942", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.191] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:36:27Z", "value" => "WIFI"} [2026-07-15 12:26:38.232] [DEBUG] QUERY OK db=39.9ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "WIFI", "network_type", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406765, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.232] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:36:27Z", "value" => "true"} [2026-07-15 12:26:38.277] [DEBUG] QUERY OK db=44.5ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "true", "kiosk_active", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406766, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.278] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:36:27Z", "value" => ""} [2026-07-15 12:26:38.326] [DEBUG] QUERY OK db=47.8ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:36:27Z", "sim_operator", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406767, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.327] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"} [2026-07-15 12:26:38.372] [DEBUG] QUERY OK db=44.6ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "UNKNOWN", "sim_number", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406768, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.372] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"} [2026-07-15 12:26:38.425] [DEBUG] QUERY OK db=52.3ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "UNKNOWN", "sim_iccid", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406769, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"} [2026-07-15 12:26:38.452] [DEBUG] QUERY OK db=26.3ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "UNKNOWN", "sim_imsi", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406770, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.452] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"} [2026-07-15 12:26:38.504] [DEBUG] QUERY OK db=51.4ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "UNKNOWN", "sim_iccid2", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406771, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.505] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:36:27Z", "value" => "UNKNOWN"} [2026-07-15 12:26:38.555] [DEBUG] QUERY OK db=49.7ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "UNKNOWN", "sim_imsi2", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406772, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.556] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "14"} [2026-07-15 12:26:38.599] [DEBUG] QUERY OK db=42.8ms queue=0.3ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "14", "data_usage_mb", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406773, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.599] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:36:27Z", "value" => "0"} [2026-07-15 12:26:38.648] [DEBUG] QUERY OK db=48.5ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36:27Z", "0", "mobile_data_mb", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406774, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.650] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:36: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:26:38.693] [DEBUG] QUERY OK db=42.1ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:36: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47226, ~N[2026-07-15 12:26:38], ~N[2026-07-15 12:26:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:26:38.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406775, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:36:27Z", message: nil, status_log_id: 47226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:26:38], updated_at: ~N[2026-07-15 12:26:38]}} [2026-07-15 12:26:38.696] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=45.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:26:38.701] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:26:38.706] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:26:38.707] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.6ms idle=10.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:28:15.458] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:28:15.458] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:28:13Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:28:13Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:28:13Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:28:13Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:28:13Z","message":""}]} [2026-07-15 12:28:15.459] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:28:13Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:28:13Z"} [2026-07-15 12:28:15.459] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:28:15.461] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=921.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-15 12:28:15.461] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:28:15.496] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=206.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:28:15], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:28:15.497] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:28:15.534] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:28:15], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:28:15.590] [DEBUG] QUERY OK db=55.0ms queue=0.1ms idle=38.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:28:13Z", ~N[2026-07-15 12:28:15], ~N[2026-07-15 12:28:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:28:15.590] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47227, oid: "org-id-placeholder", upload_time: "2026-07-15T12:28:13Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:28:15], updated_at: ~N[2026-07-15 12:28:15]} [2026-07-15 12:28:15.590] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => 28} [2026-07-15 12:28:15.629] [DEBUG] QUERY OK db=38.3ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:28:13Z", "28", "battery", 47227, ~N[2026-07-15 12:28:15], ~N[2026-07-15 12:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:28:15.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406776, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:28:13Z", message: nil, status_log_id: 47227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:28:15], updated_at: ~N[2026-07-15 12:28:15]}} [2026-07-15 12:28:15.629] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:28:13Z", "value" => 50} [2026-07-15 12:28:15.677] [DEBUG] QUERY OK db=47.0ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:28:13Z", "50", "memory", 47227, ~N[2026-07-15 12:28:15], ~N[2026-07-15 12:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:28:15.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406777, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:28:13Z", message: "Normal", status_log_id: 47227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:28:15], updated_at: ~N[2026-07-15 12:28:15]}} [2026-07-15 12:28:15.677] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => 50} [2026-07-15 12:28:15.726] [DEBUG] QUERY OK db=48.6ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:28:13Z", "50", "cpu", 47227, ~N[2026-07-15 12:28:15], ~N[2026-07-15 12:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:28:15.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406778, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:28:13Z", message: nil, status_log_id: 47227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:28:15], updated_at: ~N[2026-07-15 12:28:15]}} [2026-07-15 12:28:15.727] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:28:13Z", "value" => "online"} [2026-07-15 12:28:15.775] [DEBUG] QUERY OK db=46.7ms queue=0.1ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:28:13Z", "online", "network", 47227, ~N[2026-07-15 12:28:15], ~N[2026-07-15 12:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:28:15.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406779, itemkey: "network", value: "online", timestamp: "2026-07-15T12:28:13Z", message: nil, status_log_id: 47227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:28:15], updated_at: ~N[2026-07-15 12:28:15]}} [2026-07-15 12:28:15.775] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:28:15.775] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:28:15.778] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=51.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:28:15.782] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:28:15.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:28:15.788] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.5ms idle=8.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:28:50.494] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 12:28:50.496] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1151.3ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 12:28:50.497] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=149.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-07-15 12:28:50.497] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 12:28:52.128] [INFO ] Running offline device check... [2026-07-15 12:28:52.128] [INFO ] Starting offline device check... [2026-07-15 12:28:52.130] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=779.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-15 12:28:52.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=585.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:28:52.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.146] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.155] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.164] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.1ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.207] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms queue=0.1ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:28:52], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:28:52.207] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:28:52.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=35.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:28:52.209] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.0ms queue=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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=15.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.227] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.229] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.230] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.231] [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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.251] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.285] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms queue=0.1ms idle=19.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:28:52], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:28:52.286] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:28:52.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=35.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.297] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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-15 12:28:52.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.308] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.309] [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-15 12:28:52.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.311] [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-15 12:28:52.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.317] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:28:52.317] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:28:52.317] [INFO ] Offline device check completed successfully [2026-07-15 12:29:01.766] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:29:01.766] [INFO ] Incoming JSON payload: {"oid":"3c05d293-02ff-464a-b3a2-2afeb8d2f30c","sn":"98250623730001","uploadTime":"2026-07-15T03:38:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"ram_free_mb","value":"941","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:38:51Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:29:01.767] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3c05d293-02ff-464a-b3a2-2afeb8d2f30c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:38:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:38:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:38:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:38:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "941"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:38:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:38:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:38:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:38:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:38:51Z", "vendor" => "morefun"} [2026-07-15 12:29:01.767] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:29:01.767] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:29:01.767] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:29:01.770] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1186.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-15 12:29:01.774] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=386.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-15 12:29:01.774] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:29:01.779] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:29:01.780] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:29:01.826] [DEBUG] QUERY OK source="tms_terminals" db=46.5ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:29:01], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:29:01.827] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:29:01.828] [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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:29:01.888] [DEBUG] QUERY OK source="tms_terminals" db=60.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:29:01], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:29:01.944] [DEBUG] QUERY OK db=54.9ms idle=61.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3c05d293-02ff-464a-b3a2-2afeb8d2f30c", "2026-07-15T03:38:51Z", ~N[2026-07-15 12:29:01], ~N[2026-07-15 12:29:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:29:01.944] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47228, oid: "3c05d293-02ff-464a-b3a2-2afeb8d2f30c", upload_time: "2026-07-15T03:38:51Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:01], updated_at: ~N[2026-07-15 12:29:01]} [2026-07-15 12:29:01.944] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:38:51Z", "value" => "morefun"} [2026-07-15 12:29:01.988] [DEBUG] QUERY OK db=43.6ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "morefun", "vendor", 47228, ~N[2026-07-15 12:29:01], ~N[2026-07-15 12:29:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:01.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406780, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:01], updated_at: ~N[2026-07-15 12:29:01]}} [2026-07-15 12:29:01.991] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:38:51Z", "value" => "kiosk_launcher"} [2026-07-15 12:29:02.040] [DEBUG] QUERY OK db=48.2ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "kiosk_launcher", "model", 47228, ~N[2026-07-15 12:29:01], ~N[2026-07-15 12:29:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406781, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:01], updated_at: ~N[2026-07-15 12:29:01]}} [2026-07-15 12:29:02.040] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:38:51Z", "value" => "1.0"} [2026-07-15 12:29:02.085] [DEBUG] QUERY OK db=44.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "1.0", "app_version", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406782, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.086] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:38:51Z", "value" => "13"} [2026-07-15 12:29:02.151] [DEBUG] QUERY OK db=64.6ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "13", "android_version", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406783, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.151] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "941"} [2026-07-15 12:29:02.213] [DEBUG] QUERY OK db=61.6ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "941", "ram_free_mb", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406784, itemkey: "ram_free_mb", value: "941", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.213] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:38:51Z", "value" => "WIFI"} [2026-07-15 12:29:02.269] [DEBUG] QUERY OK db=55.4ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "WIFI", "network_type", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406785, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.269] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:38:51Z", "value" => "true"} [2026-07-15 12:29:02.326] [DEBUG] QUERY OK db=56.3ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "true", "kiosk_active", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406786, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.327] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:38:51Z", "value" => ""} [2026-07-15 12:29:02.386] [DEBUG] QUERY OK db=59.2ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:38:51Z", "sim_operator", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406787, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.387] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"} [2026-07-15 12:29:02.444] [DEBUG] QUERY OK db=56.8ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "UNKNOWN", "sim_number", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406788, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.445] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"} [2026-07-15 12:29:02.495] [DEBUG] QUERY OK db=49.9ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "UNKNOWN", "sim_iccid", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406789, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.496] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"} [2026-07-15 12:29:02.581] [DEBUG] QUERY OK db=84.4ms queue=0.1ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "UNKNOWN", "sim_imsi", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406790, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.582] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"} [2026-07-15 12:29:02.643] [DEBUG] QUERY OK db=61.0ms idle=86.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "UNKNOWN", "sim_iccid2", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406791, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.643] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:38:51Z", "value" => "UNKNOWN"} [2026-07-15 12:29:02.715] [DEBUG] QUERY OK db=70.9ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "UNKNOWN", "sim_imsi2", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406792, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.716] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "14"} [2026-07-15 12:29:02.768] [DEBUG] QUERY OK db=51.4ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "14", "data_usage_mb", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406793, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.769] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:38:51Z", "value" => "0"} [2026-07-15 12:29:02.831] [DEBUG] QUERY OK db=62.4ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "0", "mobile_data_mb", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406794, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.836] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:38:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:29:02.915] [DEBUG] QUERY OK db=68.0ms queue=9.3ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:38:51Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47228, ~N[2026-07-15 12:29:02], ~N[2026-07-15 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:02.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406795, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:38:51Z", message: nil, status_log_id: 47228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:02], updated_at: ~N[2026-07-15 12:29:02]}} [2026-07-15 12:29:02.924] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms idle=86.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-15 12:29:02.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:29:02.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.7ms idle=44.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:29:02.984] [DEBUG] QUERY OK source="tms_terminal_status_items" db=4.4ms queue=6.3ms idle=49.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:29:31.864] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:29:31.864] [INFO ] Incoming JSON payload: {"oid":"c01e9029-c4db-447e-a4c2-699fecdfd524","sn":"98250623730001","uploadTime":"2026-07-15T03:39:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"ram_free_mb","value":"939","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:39:21Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:29:31.866] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c01e9029-c4db-447e-a4c2-699fecdfd524", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:39:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:39:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:39:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:39:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "939"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:39:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:39:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:39:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:39:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:39:21Z", "vendor" => "morefun"} [2026-07-15 12:29:31.866] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:29:31.866] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:29:31.866] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:29:31.867] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1315.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-15 12:29:31.868] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=361.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-15 12:29:31.868] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:29:31.870] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:29:31.870] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:29:31.916] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:29:31], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:29:31.916] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:29:31.917] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=46.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:29:31.967] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:29:31], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:29:32.022] [DEBUG] QUERY OK db=54.5ms queue=0.1ms idle=50.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "c01e9029-c4db-447e-a4c2-699fecdfd524", "2026-07-15T03:39:21Z", ~N[2026-07-15 12:29:31], ~N[2026-07-15 12:29:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:29:32.022] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47229, oid: "c01e9029-c4db-447e-a4c2-699fecdfd524", upload_time: "2026-07-15T03:39:21Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:31], updated_at: ~N[2026-07-15 12:29:31]} [2026-07-15 12:29:32.022] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:39:21Z", "value" => "morefun"} [2026-07-15 12:29:32.082] [DEBUG] QUERY OK db=59.2ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "morefun", "vendor", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406796, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.082] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:39:21Z", "value" => "kiosk_launcher"} [2026-07-15 12:29:32.139] [DEBUG] QUERY OK db=56.0ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "kiosk_launcher", "model", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406797, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.139] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:39:21Z", "value" => "1.0"} [2026-07-15 12:29:32.188] [DEBUG] QUERY OK db=48.4ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "1.0", "app_version", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406798, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.189] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:39:21Z", "value" => "13"} [2026-07-15 12:29:32.256] [DEBUG] QUERY OK db=64.5ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "13", "android_version", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406799, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.256] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "939"} [2026-07-15 12:29:32.292] [DEBUG] QUERY OK db=35.5ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "939", "ram_free_mb", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406800, itemkey: "ram_free_mb", value: "939", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.293] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:39:21Z", "value" => "WIFI"} [2026-07-15 12:29:32.357] [DEBUG] QUERY OK db=63.8ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "WIFI", "network_type", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406801, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.359] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:39:21Z", "value" => "true"} [2026-07-15 12:29:32.429] [DEBUG] QUERY OK db=70.1ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "true", "kiosk_active", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406802, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.430] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:39:21Z", "value" => ""} [2026-07-15 12:29:32.475] [DEBUG] QUERY OK db=44.9ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:39:21Z", "sim_operator", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406803, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.475] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"} [2026-07-15 12:29:32.549] [DEBUG] QUERY OK db=70.3ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "UNKNOWN", "sim_number", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406804, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.549] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"} [2026-07-15 12:29:32.617] [DEBUG] QUERY OK db=67.5ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "UNKNOWN", "sim_iccid", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406805, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"} [2026-07-15 12:29:32.670] [DEBUG] QUERY OK db=49.0ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "UNKNOWN", "sim_imsi", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406806, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"} [2026-07-15 12:29:32.733] [DEBUG] QUERY OK db=59.1ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "UNKNOWN", "sim_iccid2", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406807, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.733] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:39:21Z", "value" => "UNKNOWN"} [2026-07-15 12:29:32.786] [DEBUG] QUERY OK db=52.4ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "UNKNOWN", "sim_imsi2", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406808, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.787] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "14"} [2026-07-15 12:29:32.842] [DEBUG] QUERY OK db=55.0ms queue=0.2ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "14", "data_usage_mb", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406809, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.843] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:39:21Z", "value" => "0"} [2026-07-15 12:29:32.934] [DEBUG] QUERY OK db=88.5ms queue=2.0ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "0", "mobile_data_mb", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:32.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406810, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:32.937] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:39:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:29:33.047] [DEBUG] QUERY OK db=104.1ms idle=99.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:21Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47229, ~N[2026-07-15 12:29:32], ~N[2026-07-15 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:29:33.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406811, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:39:21Z", message: nil, status_log_id: 47229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:29:32], updated_at: ~N[2026-07-15 12:29:32]}} [2026-07-15 12:29:33.052] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=115.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-15 12:29:33.064] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:29:33.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=20.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:29:33.077] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.6ms queue=3.4ms idle=19.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:30:01.975] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:30:01.976] [INFO ] Incoming JSON payload: {"oid":"1139a580-b49a-4eef-a841-ec34eeb701cc","sn":"98250623730001","uploadTime":"2026-07-15T03:39:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:39:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:30:01.977] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1139a580-b49a-4eef-a841-ec34eeb701cc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:39:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:39:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:39:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:39:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:39:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:39:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:39:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:39:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:39:52Z", "vendor" => "morefun"} [2026-07-15 12:30:01.979] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:30:01.982] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:30:01.982] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:30:01.984] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=1393.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-15 12:30:01.987] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=393.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-15 12:30:01.987] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:30:01.993] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:30:01.993] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:30:02.014] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:30:01], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:30:02.015] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:30:02.016] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=21.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:30:02.072] [DEBUG] QUERY OK source="tms_terminals" db=56.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:30:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:30:02.118] [DEBUG] QUERY OK db=45.7ms idle=56.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "1139a580-b49a-4eef-a841-ec34eeb701cc", "2026-07-15T03:39:52Z", ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:30:02.119] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47230, oid: "1139a580-b49a-4eef-a841-ec34eeb701cc", upload_time: "2026-07-15T03:39:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]} [2026-07-15 12:30:02.119] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:39:52Z", "value" => "morefun"} [2026-07-15 12:30:02.177] [DEBUG] QUERY OK db=57.6ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "morefun", "vendor", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406812, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.177] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:39:52Z", "value" => "kiosk_launcher"} [2026-07-15 12:30:02.239] [DEBUG] QUERY OK db=61.5ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "kiosk_launcher", "model", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406813, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.240] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:39:52Z", "value" => "1.0"} [2026-07-15 12:30:02.286] [DEBUG] QUERY OK db=44.2ms queue=1.9ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "1.0", "app_version", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406814, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.287] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:39:52Z", "value" => "13"} [2026-07-15 12:30:02.343] [DEBUG] QUERY OK db=55.7ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "13", "android_version", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406815, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.351] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "937"} [2026-07-15 12:30:02.381] [DEBUG] QUERY OK db=29.8ms idle=64.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "937", "ram_free_mb", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406816, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.381] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:39:52Z", "value" => "WIFI"} [2026-07-15 12:30:02.443] [DEBUG] QUERY OK db=61.6ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "WIFI", "network_type", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406817, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.444] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:39:52Z", "value" => "true"} [2026-07-15 12:30:02.500] [DEBUG] QUERY OK db=55.8ms queue=0.2ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "true", "kiosk_active", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406818, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.501] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:39:52Z", "value" => ""} [2026-07-15 12:30:02.546] [DEBUG] QUERY OK db=45.1ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:39:52Z", "sim_operator", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406819, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.549] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"} [2026-07-15 12:30:02.588] [DEBUG] QUERY OK db=37.9ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "UNKNOWN", "sim_number", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406820, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.588] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"} [2026-07-15 12:30:02.645] [DEBUG] QUERY OK db=56.9ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "UNKNOWN", "sim_iccid", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406821, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.647] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"} [2026-07-15 12:30:02.712] [DEBUG] QUERY OK db=64.9ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "UNKNOWN", "sim_imsi", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406822, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.712] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"} [2026-07-15 12:30:02.786] [DEBUG] QUERY OK db=73.7ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "UNKNOWN", "sim_iccid2", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406823, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.787] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:39:52Z", "value" => "UNKNOWN"} [2026-07-15 12:30:02.821] [DEBUG] QUERY OK db=33.3ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "UNKNOWN", "sim_imsi2", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406824, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.824] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "14"} [2026-07-15 12:30:02.877] [DEBUG] QUERY OK db=52.1ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "14", "data_usage_mb", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406825, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.877] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:39:52Z", "value" => "0"} [2026-07-15 12:30:02.945] [DEBUG] QUERY OK db=67.0ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "0", "mobile_data_mb", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:02.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406826, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:02.952] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:39:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:30:03.027] [DEBUG] QUERY OK db=73.8ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:39:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47230, ~N[2026-07-15 12:30:02], ~N[2026-07-15 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:03.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406827, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:39:52Z", message: nil, status_log_id: 47230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:02], updated_at: ~N[2026-07-15 12:30:02]}} [2026-07-15 12:30:03.030] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=82.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-15 12:30:03.064] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:30:03.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.2ms idle=43.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:30:03.090] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=3.4ms idle=55.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:30:32.081] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:30:32.081] [INFO ] Incoming JSON payload: {"oid":"4f49c8f6-12a3-4b31-a418-2692b69d45d8","sn":"98250623730001","uploadTime":"2026-07-15T03:40:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:40:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:30:32.082] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4f49c8f6-12a3-4b31-a418-2692b69d45d8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:40:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:40:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:40:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:40:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:40:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:40:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:40:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:40:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:40:22Z", "vendor" => "morefun"} [2026-07-15 12:30:32.082] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:30:32.083] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:30:32.083] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:30:32.085] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=527.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-15 12:30:32.086] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.9ms idle=390.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-15 12:30:32.086] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:30:32.088] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.2ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:30:32.089] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:30:32.139] [DEBUG] QUERY OK source="tms_terminals" db=50.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:30:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:30:32.139] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:30:32.141] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=51.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:30:32.186] [DEBUG] QUERY OK source="tms_terminals" db=44.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:30:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:30:32.232] [DEBUG] QUERY OK db=45.2ms idle=45.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "4f49c8f6-12a3-4b31-a418-2692b69d45d8", "2026-07-15T03:40:22Z", ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:30:32.232] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47231, oid: "4f49c8f6-12a3-4b31-a418-2692b69d45d8", upload_time: "2026-07-15T03:40:22Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]} [2026-07-15 12:30:32.232] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:40:22Z", "value" => "morefun"} [2026-07-15 12:30:32.277] [DEBUG] QUERY OK db=44.3ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "morefun", "vendor", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406828, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.277] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:40:22Z", "value" => "kiosk_launcher"} [2026-07-15 12:30:32.326] [DEBUG] QUERY OK db=48.3ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "kiosk_launcher", "model", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406829, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.327] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:40:22Z", "value" => "1.0"} [2026-07-15 12:30:32.386] [DEBUG] QUERY OK db=58.7ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "1.0", "app_version", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406830, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.386] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:40:22Z", "value" => "13"} [2026-07-15 12:30:32.433] [DEBUG] QUERY OK db=46.5ms queue=0.1ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "13", "android_version", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406831, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.434] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "937"} [2026-07-15 12:30:32.577] [DEBUG] QUERY OK db=142.8ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "937", "ram_free_mb", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406832, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.577] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:40:22Z", "value" => "WIFI"} [2026-07-15 12:30:32.613] [DEBUG] QUERY OK db=35.2ms idle=144.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "WIFI", "network_type", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406833, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.613] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:40:22Z", "value" => "true"} [2026-07-15 12:30:32.649] [DEBUG] QUERY OK db=35.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "true", "kiosk_active", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406834, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.650] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:40:22Z", "value" => ""} [2026-07-15 12:30:32.703] [DEBUG] QUERY OK db=52.8ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:40:22Z", "sim_operator", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406835, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.703] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"} [2026-07-15 12:30:32.784] [DEBUG] QUERY OK db=80.8ms idle=4.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "UNKNOWN", "sim_number", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406836, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.785] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"} [2026-07-15 12:30:32.829] [DEBUG] QUERY OK db=43.5ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "UNKNOWN", "sim_iccid", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406837, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.830] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"} [2026-07-15 12:30:32.875] [DEBUG] QUERY OK db=44.8ms queue=0.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "UNKNOWN", "sim_imsi", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406838, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.877] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"} [2026-07-15 12:30:32.917] [DEBUG] QUERY OK db=39.6ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "UNKNOWN", "sim_iccid2", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:32.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406839, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:32.917] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:40:22Z", "value" => "UNKNOWN"} [2026-07-15 12:30:33.016] [DEBUG] QUERY OK db=98.3ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "UNKNOWN", "sim_imsi2", 47231, ~N[2026-07-15 12:30:32], ~N[2026-07-15 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:33.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406840, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:32], updated_at: ~N[2026-07-15 12:30:32]}} [2026-07-15 12:30:33.016] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "14"} [2026-07-15 12:30:33.057] [DEBUG] QUERY OK db=40.0ms idle=100.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "14", "data_usage_mb", 47231, ~N[2026-07-15 12:30:33], ~N[2026-07-15 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:33.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406841, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:33], updated_at: ~N[2026-07-15 12:30:33]}} [2026-07-15 12:30:33.057] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:40:22Z", "value" => "0"} [2026-07-15 12:30:33.126] [DEBUG] QUERY OK db=67.7ms queue=1.0ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "0", "mobile_data_mb", 47231, ~N[2026-07-15 12:30:33], ~N[2026-07-15 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:33.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406842, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:33], updated_at: ~N[2026-07-15 12:30:33]}} [2026-07-15 12:30:33.137] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:40:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:30:33.205] [DEBUG] QUERY OK db=60.7ms idle=86.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47231, ~N[2026-07-15 12:30:33], ~N[2026-07-15 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:30:33.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406843, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:40:22Z", message: nil, status_log_id: 47231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:30:33], updated_at: ~N[2026-07-15 12:30:33]}} [2026-07-15 12:30:33.210] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=82.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-15 12:30:33.221] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:30:33.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=18.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:30:33.235] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.2ms queue=5.4ms idle=16.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:31:02.085] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:31:02.085] [INFO ] Incoming JSON payload: {"oid":"edce8ddc-50e6-4bec-8027-679ab03a8150","sn":"98250623730001","uploadTime":"2026-07-15T03:40:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"ram_free_mb","value":"935","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:40:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:31:02.086] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "edce8ddc-50e6-4bec-8027-679ab03a8150", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:40:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:40:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:40:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:40:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "935"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:40:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:40:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:40:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:40:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:40:52Z", "vendor" => "morefun"} [2026-07-15 12:31:02.086] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:31:02.086] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:31:02.086] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:31:02.089] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=1307.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-15 12:31:02.090] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=304.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-15 12:31:02.090] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:31:02.090] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:31:02.091] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:31:02.129] [DEBUG] QUERY OK source="tms_terminals" db=38.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:31:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:31:02.130] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:31:02.133] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=39.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:31:02.182] [DEBUG] QUERY OK source="tms_terminals" db=48.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:31:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:31:02.239] [DEBUG] QUERY OK db=56.1ms idle=49.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "edce8ddc-50e6-4bec-8027-679ab03a8150", "2026-07-15T03:40:52Z", ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:31:02.239] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47232, oid: "edce8ddc-50e6-4bec-8027-679ab03a8150", upload_time: "2026-07-15T03:40:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]} [2026-07-15 12:31:02.239] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:40:52Z", "value" => "morefun"} [2026-07-15 12:31:02.341] [DEBUG] QUERY OK db=100.9ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "morefun", "vendor", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406844, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.341] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:40:52Z", "value" => "kiosk_launcher"} [2026-07-15 12:31:02.380] [DEBUG] QUERY OK db=38.7ms idle=102.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "kiosk_launcher", "model", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406845, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.381] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:40:52Z", "value" => "1.0"} [2026-07-15 12:31:02.434] [DEBUG] QUERY OK db=53.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "1.0", "app_version", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406846, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.435] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:40:52Z", "value" => "13"} [2026-07-15 12:31:02.481] [DEBUG] QUERY OK db=46.2ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "13", "android_version", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406847, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.482] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "935"} [2026-07-15 12:31:02.515] [DEBUG] QUERY OK db=32.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "935", "ram_free_mb", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406848, itemkey: "ram_free_mb", value: "935", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.515] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:40:52Z", "value" => "WIFI"} [2026-07-15 12:31:02.567] [DEBUG] QUERY OK db=51.3ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "WIFI", "network_type", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406849, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.570] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:40:52Z", "value" => "true"} [2026-07-15 12:31:02.609] [DEBUG] QUERY OK db=38.2ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "true", "kiosk_active", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406850, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.609] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:40:52Z", "value" => ""} [2026-07-15 12:31:02.671] [DEBUG] QUERY OK db=62.1ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:40:52Z", "sim_operator", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406851, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.672] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"} [2026-07-15 12:31:02.757] [DEBUG] QUERY OK db=84.9ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "UNKNOWN", "sim_number", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406852, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.758] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"} [2026-07-15 12:31:02.828] [DEBUG] QUERY OK db=69.8ms idle=86.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "UNKNOWN", "sim_iccid", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406853, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.831] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"} [2026-07-15 12:31:02.881] [DEBUG] QUERY OK db=46.3ms queue=3.5ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "UNKNOWN", "sim_imsi", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406854, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.881] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"} [2026-07-15 12:31:02.945] [DEBUG] QUERY OK db=58.4ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "UNKNOWN", "sim_iccid2", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406855, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.946] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:40:52Z", "value" => "UNKNOWN"} [2026-07-15 12:31:02.983] [DEBUG] QUERY OK db=37.2ms idle=64.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "UNKNOWN", "sim_imsi2", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:02.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406856, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:02.984] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "14"} [2026-07-15 12:31:03.040] [DEBUG] QUERY OK db=55.7ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "14", "data_usage_mb", 47232, ~N[2026-07-15 12:31:02], ~N[2026-07-15 12:31:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:03.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406857, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:02], updated_at: ~N[2026-07-15 12:31:02]}} [2026-07-15 12:31:03.042] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:40:52Z", "value" => "0"} [2026-07-15 12:31:03.116] [DEBUG] QUERY OK db=69.6ms queue=2.6ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "0", "mobile_data_mb", 47232, ~N[2026-07-15 12:31:03], ~N[2026-07-15 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:03.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406858, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:03], updated_at: ~N[2026-07-15 12:31:03]}} [2026-07-15 12:31:03.117] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:40:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:31:03.154] [DEBUG] QUERY OK db=35.7ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:40:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47232, ~N[2026-07-15 12:31:03], ~N[2026-07-15 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:03.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406859, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:40:52Z", message: nil, status_log_id: 47232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:03], updated_at: ~N[2026-07-15 12:31:03]}} [2026-07-15 12:31:03.160] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=42.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-15 12:31:03.171] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:31:03.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=18.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:31:03.186] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=3.2ms idle=21.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:31:32.290] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:31:32.290] [INFO ] Incoming JSON payload: {"oid":"2a427a76-e414-4d19-9d12-e80555bc784b","sn":"98250623730001","uploadTime":"2026-07-15T03:41:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"ram_free_mb","value":"935","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:41:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:31:32.291] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2a427a76-e414-4d19-9d12-e80555bc784b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:41:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:41:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:41:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:41:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "935"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:41:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:41:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:41:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:41:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:41:22Z", "vendor" => "morefun"} [2026-07-15 12:31:32.292] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:31:32.293] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:31:32.293] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:31:32.294] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=732.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-15 12:31:32.295] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=422.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-15 12:31:32.295] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:31:32.302] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=2.2ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:31:32.302] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:31:32.426] [DEBUG] QUERY OK source="tms_terminals" db=124.3ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:31:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:31:32.427] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:31:32.428] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=125.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:31:32.533] [DEBUG] QUERY OK source="tms_terminals" db=104.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:31:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:31:32.644] [DEBUG] QUERY OK db=110.4ms idle=105.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "2a427a76-e414-4d19-9d12-e80555bc784b", "2026-07-15T03:41:22Z", ~N[2026-07-15 12:31:32], ~N[2026-07-15 12:31:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:31:32.645] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47233, oid: "2a427a76-e414-4d19-9d12-e80555bc784b", upload_time: "2026-07-15T03:41:22Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:32], updated_at: ~N[2026-07-15 12:31:32]} [2026-07-15 12:31:32.645] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:41:22Z", "value" => "morefun"} [2026-07-15 12:31:32.756] [DEBUG] QUERY OK db=110.8ms idle=112.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "morefun", "vendor", 47233, ~N[2026-07-15 12:31:32], ~N[2026-07-15 12:31:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:32.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406860, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:32], updated_at: ~N[2026-07-15 12:31:32]}} [2026-07-15 12:31:32.757] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:41:22Z", "value" => "kiosk_launcher"} [2026-07-15 12:31:32.895] [DEBUG] QUERY OK db=138.2ms idle=112.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "kiosk_launcher", "model", 47233, ~N[2026-07-15 12:31:32], ~N[2026-07-15 12:31:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:32.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406861, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:32], updated_at: ~N[2026-07-15 12:31:32]}} [2026-07-15 12:31:32.897] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:41:22Z", "value" => "1.0"} [2026-07-15 12:31:33.031] [DEBUG] QUERY OK db=132.7ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "1.0", "app_version", 47233, ~N[2026-07-15 12:31:32], ~N[2026-07-15 12:31:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406862, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:32], updated_at: ~N[2026-07-15 12:31:32]}} [2026-07-15 12:31:33.031] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:41:22Z", "value" => "13"} [2026-07-15 12:31:33.207] [DEBUG] QUERY OK db=174.6ms idle=137.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "13", "android_version", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406863, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.208] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "935"} [2026-07-15 12:31:33.349] [DEBUG] QUERY OK db=138.4ms queue=0.2ms idle=180.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "935", "ram_free_mb", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406864, itemkey: "ram_free_mb", value: "935", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.351] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:41:22Z", "value" => "WIFI"} [2026-07-15 12:31:33.430] [DEBUG] QUERY OK db=74.9ms queue=3.3ms idle=144.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "WIFI", "network_type", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406865, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.430] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:41:22Z", "value" => "true"} [2026-07-15 12:31:33.510] [DEBUG] QUERY OK db=77.0ms queue=2.6ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "true", "kiosk_active", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406866, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.511] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:41:22Z", "value" => ""} [2026-07-15 12:31:33.618] [DEBUG] QUERY OK db=107.3ms idle=81.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:41:22Z", "sim_operator", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406867, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.619] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"} [2026-07-15 12:31:33.698] [DEBUG] QUERY OK db=78.8ms idle=108.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "UNKNOWN", "sim_number", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406868, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.699] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"} [2026-07-15 12:31:33.805] [DEBUG] QUERY OK db=105.9ms idle=80.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "UNKNOWN", "sim_iccid", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:33.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406869, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:33.807] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"} [2026-07-15 12:31:34.304] [DEBUG] QUERY OK db=496.8ms idle=108.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "UNKNOWN", "sim_imsi", 47233, ~N[2026-07-15 12:31:33], ~N[2026-07-15 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:34.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406870, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:33], updated_at: ~N[2026-07-15 12:31:33]}} [2026-07-15 12:31:34.305] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"} [2026-07-15 12:31:34.509] [DEBUG] QUERY OK db=203.5ms idle=424.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "UNKNOWN", "sim_iccid2", 47233, ~N[2026-07-15 12:31:34], ~N[2026-07-15 12:31:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:34.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406871, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:34], updated_at: ~N[2026-07-15 12:31:34]}} [2026-07-15 12:31:34.509] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:41:22Z", "value" => "UNKNOWN"} [2026-07-15 12:31:34.668] [DEBUG] QUERY OK db=158.2ms queue=0.1ms idle=205.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "UNKNOWN", "sim_imsi2", 47233, ~N[2026-07-15 12:31:34], ~N[2026-07-15 12:31:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:34.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406872, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:34], updated_at: ~N[2026-07-15 12:31:34]}} [2026-07-15 12:31:34.668] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "14"} [2026-07-15 12:31:34.772] [DEBUG] QUERY OK db=103.6ms idle=159.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "14", "data_usage_mb", 47233, ~N[2026-07-15 12:31:34], ~N[2026-07-15 12:31:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:34.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406873, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:34], updated_at: ~N[2026-07-15 12:31:34]}} [2026-07-15 12:31:34.773] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:41:22Z", "value" => "0"} [2026-07-15 12:31:34.902] [DEBUG] QUERY OK db=129.0ms idle=105.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "0", "mobile_data_mb", 47233, ~N[2026-07-15 12:31:34], ~N[2026-07-15 12:31:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:34.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406874, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:34], updated_at: ~N[2026-07-15 12:31:34]}} [2026-07-15 12:31:34.904] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:41:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:31:35.074] [DEBUG] QUERY OK db=168.2ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47233, ~N[2026-07-15 12:31:34], ~N[2026-07-15 12:31:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:31:35.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406875, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:41:22Z", message: nil, status_log_id: 47233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:31:34], updated_at: ~N[2026-07-15 12:31:34]}} [2026-07-15 12:31:35.077] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=172.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-15 12:31:35.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:31:35.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:31:35.088] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=9.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:32:02.706] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:32:02.706] [INFO ] Incoming JSON payload: {"oid":"5cc3701c-457d-471c-a76c-cb5c102ce1a2","sn":"98250623730001","uploadTime":"2026-07-15T03:41:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"ram_free_mb","value":"935","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:41:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:32:02.707] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5cc3701c-457d-471c-a76c-cb5c102ce1a2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:41:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:41:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:41:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:41:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "935"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:41:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:41:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:41:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:41:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:41:52Z", "vendor" => "morefun"} [2026-07-15 12:32:02.708] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:32:02.708] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:32:02.708] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:32:02.715] [DEBUG] QUERY OK source="parameter_templates" db=6.9ms idle=737.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-15 12:32:02.718] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms 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-15 12:32:02.719] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:32:02.724] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:32:02.724] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:32:02.786] [DEBUG] QUERY OK source="tms_terminals" db=61.2ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:32:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:32:02.786] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:32:02.789] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.4ms idle=62.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:32:02.837] [DEBUG] QUERY OK source="tms_terminals" db=47.5ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:32:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:32:02.888] [DEBUG] QUERY OK db=49.6ms queue=1.4ms idle=48.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "5cc3701c-457d-471c-a76c-cb5c102ce1a2", "2026-07-15T03:41:52Z", ~N[2026-07-15 12:32:02], ~N[2026-07-15 12:32:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:32:02.889] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47234, oid: "5cc3701c-457d-471c-a76c-cb5c102ce1a2", upload_time: "2026-07-15T03:41:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:02], updated_at: ~N[2026-07-15 12:32:02]} [2026-07-15 12:32:02.889] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:41:52Z", "value" => "morefun"} [2026-07-15 12:32:02.932] [DEBUG] QUERY OK db=42.8ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "morefun", "vendor", 47234, ~N[2026-07-15 12:32:02], ~N[2026-07-15 12:32:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:02.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406876, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:02], updated_at: ~N[2026-07-15 12:32:02]}} [2026-07-15 12:32:02.936] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:41:52Z", "value" => "kiosk_launcher"} [2026-07-15 12:32:02.995] [DEBUG] QUERY OK db=59.1ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "kiosk_launcher", "model", 47234, ~N[2026-07-15 12:32:02], ~N[2026-07-15 12:32:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:02.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406877, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:02], updated_at: ~N[2026-07-15 12:32:02]}} [2026-07-15 12:32:02.996] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:41:52Z", "value" => "1.0"} [2026-07-15 12:32:03.054] [DEBUG] QUERY OK db=57.8ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "1.0", "app_version", 47234, ~N[2026-07-15 12:32:02], ~N[2026-07-15 12:32:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406878, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:02], updated_at: ~N[2026-07-15 12:32:02]}} [2026-07-15 12:32:03.055] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:41:52Z", "value" => "13"} [2026-07-15 12:32:03.108] [DEBUG] QUERY OK db=52.7ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "13", "android_version", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406879, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.108] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "935"} [2026-07-15 12:32:03.146] [DEBUG] QUERY OK db=37.2ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "935", "ram_free_mb", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406880, itemkey: "ram_free_mb", value: "935", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.146] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:41:52Z", "value" => "WIFI"} [2026-07-15 12:32:03.213] [DEBUG] QUERY OK db=66.7ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "WIFI", "network_type", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406881, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.213] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:41:52Z", "value" => "true"} [2026-07-15 12:32:03.259] [DEBUG] QUERY OK db=44.7ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "true", "kiosk_active", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406882, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.259] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:41:52Z", "value" => ""} [2026-07-15 12:32:03.304] [DEBUG] QUERY OK db=44.8ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:41:52Z", "sim_operator", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406883, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.305] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"} [2026-07-15 12:32:03.337] [DEBUG] QUERY OK db=32.2ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "UNKNOWN", "sim_number", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406884, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.338] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"} [2026-07-15 12:32:03.384] [DEBUG] QUERY OK db=46.3ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "UNKNOWN", "sim_iccid", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406885, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.385] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"} [2026-07-15 12:32:03.444] [DEBUG] QUERY OK db=59.4ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "UNKNOWN", "sim_imsi", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406886, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.445] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"} [2026-07-15 12:32:03.490] [DEBUG] QUERY OK db=44.7ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "UNKNOWN", "sim_iccid2", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406887, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.490] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:41:52Z", "value" => "UNKNOWN"} [2026-07-15 12:32:03.558] [DEBUG] QUERY OK db=66.8ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "UNKNOWN", "sim_imsi2", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406888, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.559] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "14"} [2026-07-15 12:32:03.613] [DEBUG] QUERY OK db=53.6ms queue=0.1ms idle=69.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "14", "data_usage_mb", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406889, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.613] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:41:52Z", "value" => "0"} [2026-07-15 12:32:03.675] [DEBUG] QUERY OK db=61.4ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "0", "mobile_data_mb", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406890, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.678] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:41:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:32:03.739] [DEBUG] QUERY OK db=57.5ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:41:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47234, ~N[2026-07-15 12:32:03], ~N[2026-07-15 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:03.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406891, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:41:52Z", message: nil, status_log_id: 47234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:03], updated_at: ~N[2026-07-15 12:32:03]}} [2026-07-15 12:32:03.746] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=65.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:32:03.765] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:32:03.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.3ms idle=30.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:32:03.777] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.8ms queue=1.0ms idle=27.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:32:32.816] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:32:32.816] [INFO ] Incoming JSON payload: {"oid":"3651af26-a665-489a-bffc-6e8078fd1a2b","sn":"98250623730001","uploadTime":"2026-07-15T03:42:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:42:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:32:32.819] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3651af26-a665-489a-bffc-6e8078fd1a2b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:42:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:42:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:42:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:42:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:42:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:42:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:42:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:42:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:42:22Z", "vendor" => "morefun"} [2026-07-15 12:32:32.819] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:32:32.819] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:32:32.820] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:32:32.821] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=1254.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-15 12:32:32.824] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=753.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-15 12:32:32.824] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:32:32.825] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:32:32.826] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:32:32.877] [DEBUG] QUERY OK source="tms_terminals" db=51.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:32:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:32:32.877] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:32:32.878] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=52.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:32:32.920] [DEBUG] QUERY OK source="tms_terminals" db=41.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:32:32], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:32:32.972] [DEBUG] QUERY OK db=50.5ms queue=0.6ms idle=42.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3651af26-a665-489a-bffc-6e8078fd1a2b", "2026-07-15T03:42:22Z", ~N[2026-07-15 12:32:32], ~N[2026-07-15 12:32:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:32:32.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47235, oid: "3651af26-a665-489a-bffc-6e8078fd1a2b", upload_time: "2026-07-15T03:42:22Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:32], updated_at: ~N[2026-07-15 12:32:32]} [2026-07-15 12:32:32.973] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:42:22Z", "value" => "morefun"} [2026-07-15 12:32:33.034] [DEBUG] QUERY OK db=61.2ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "morefun", "vendor", 47235, ~N[2026-07-15 12:32:32], ~N[2026-07-15 12:32:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406892, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:32], updated_at: ~N[2026-07-15 12:32:32]}} [2026-07-15 12:32:33.035] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:42:22Z", "value" => "kiosk_launcher"} [2026-07-15 12:32:33.073] [DEBUG] QUERY OK db=38.4ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "kiosk_launcher", "model", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406893, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.074] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:42:22Z", "value" => "1.0"} [2026-07-15 12:32:33.109] [DEBUG] QUERY OK db=34.3ms idle=3.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "1.0", "app_version", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406894, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.109] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:42:22Z", "value" => "13"} [2026-07-15 12:32:33.134] [DEBUG] QUERY OK db=24.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "13", "android_version", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406895, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.136] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "932"} [2026-07-15 12:32:33.181] [DEBUG] QUERY OK db=44.4ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "932", "ram_free_mb", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406896, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.181] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:42:22Z", "value" => "WIFI"} [2026-07-15 12:32:33.205] [DEBUG] QUERY OK db=23.2ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "WIFI", "network_type", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406897, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.205] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:42:22Z", "value" => "true"} [2026-07-15 12:32:33.251] [DEBUG] QUERY OK db=45.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "true", "kiosk_active", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406898, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.252] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:42:22Z", "value" => ""} [2026-07-15 12:32:33.284] [DEBUG] QUERY OK db=32.0ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:42:22Z", "sim_operator", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406899, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.284] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"} [2026-07-15 12:32:33.316] [DEBUG] QUERY OK db=31.7ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "UNKNOWN", "sim_number", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406900, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.318] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"} [2026-07-15 12:32:33.358] [DEBUG] QUERY OK db=38.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "UNKNOWN", "sim_iccid", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406901, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.358] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"} [2026-07-15 12:32:33.384] [DEBUG] QUERY OK db=25.4ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "UNKNOWN", "sim_imsi", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406902, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.384] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"} [2026-07-15 12:32:33.426] [DEBUG] QUERY OK db=41.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "UNKNOWN", "sim_iccid2", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406903, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.427] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:42:22Z", "value" => "UNKNOWN"} [2026-07-15 12:32:33.478] [DEBUG] QUERY OK db=51.2ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "UNKNOWN", "sim_imsi2", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406904, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.479] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "14"} [2026-07-15 12:32:33.513] [DEBUG] QUERY OK db=33.7ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "14", "data_usage_mb", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406905, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.513] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:42:22Z", "value" => "0"} [2026-07-15 12:32:33.580] [DEBUG] QUERY OK db=66.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "0", "mobile_data_mb", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406906, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.581] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:42:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:32:33.651] [DEBUG] QUERY OK db=68.9ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47235, ~N[2026-07-15 12:32:33], ~N[2026-07-15 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:32:33.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406907, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:42:22Z", message: nil, status_log_id: 47235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:32:33], updated_at: ~N[2026-07-15 12:32:33]}} [2026-07-15 12:32:33.657] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=76.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-15 12:32:33.665] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:32:33.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:32:33.673] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=14.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:33:02.947] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:33:02.947] [INFO ] Incoming JSON payload: {"oid":"be82b46d-b5cf-4797-83e4-2fb6e8c96f9b","sn":"98250623730001","uploadTime":"2026-07-15T03:42:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:42:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:33:02.949] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "be82b46d-b5cf-4797-83e4-2fb6e8c96f9b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:42:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:42:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:42:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:42:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:42:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:42:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:42:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:42:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:42:52Z", "vendor" => "morefun"} [2026-07-15 12:33:02.949] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:33:02.951] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:33:02.951] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:33:02.955] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.6ms idle=785.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-15 12:33:02.958] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=749.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-15 12:33:02.958] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:33:02.962] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.6ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:33:02.963] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:33:03.162] [DEBUG] QUERY OK source="tms_terminals" db=194.4ms queue=4.8ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:33:02], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:33:03.162] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:33:03.168] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms idle=201.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:33:03.209] [DEBUG] QUERY OK source="tms_terminals" db=40.9ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:33:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:33:03.256] [DEBUG] QUERY OK db=44.2ms idle=29.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "be82b46d-b5cf-4797-83e4-2fb6e8c96f9b", "2026-07-15T03:42:52Z", ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:33:03.256] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47236, oid: "be82b46d-b5cf-4797-83e4-2fb6e8c96f9b", upload_time: "2026-07-15T03:42:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]} [2026-07-15 12:33:03.256] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:42:52Z", "value" => "morefun"} [2026-07-15 12:33:03.304] [DEBUG] QUERY OK db=47.1ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "morefun", "vendor", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406908, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.305] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:42:52Z", "value" => "kiosk_launcher"} [2026-07-15 12:33:03.377] [DEBUG] QUERY OK db=71.0ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "kiosk_launcher", "model", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406909, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.377] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:42:52Z", "value" => "1.0"} [2026-07-15 12:33:03.421] [DEBUG] QUERY OK db=43.9ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "1.0", "app_version", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406910, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.422] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:42:52Z", "value" => "13"} [2026-07-15 12:33:03.454] [DEBUG] QUERY OK db=29.8ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "13", "android_version", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406911, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.455] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "930"} [2026-07-15 12:33:03.489] [DEBUG] QUERY OK db=34.2ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "930", "ram_free_mb", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406912, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.490] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:42:52Z", "value" => "WIFI"} [2026-07-15 12:33:03.555] [DEBUG] QUERY OK db=65.1ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "WIFI", "network_type", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406913, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.556] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:42:52Z", "value" => "true"} [2026-07-15 12:33:03.584] [DEBUG] QUERY OK db=27.5ms queue=0.3ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "true", "kiosk_active", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406914, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.584] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:42:52Z", "value" => ""} [2026-07-15 12:33:03.627] [DEBUG] QUERY OK db=38.5ms queue=4.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:42:52Z", "sim_operator", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406915, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.628] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"} [2026-07-15 12:33:03.671] [DEBUG] QUERY OK db=42.4ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "UNKNOWN", "sim_number", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406916, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.671] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"} [2026-07-15 12:33:03.697] [DEBUG] QUERY OK db=25.3ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "UNKNOWN", "sim_iccid", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406917, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.697] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"} [2026-07-15 12:33:03.736] [DEBUG] QUERY OK db=38.8ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "UNKNOWN", "sim_imsi", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406918, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.737] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"} [2026-07-15 12:33:03.775] [DEBUG] QUERY OK db=36.9ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "UNKNOWN", "sim_iccid2", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406919, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.776] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:42:52Z", "value" => "UNKNOWN"} [2026-07-15 12:33:03.799] [DEBUG] QUERY OK db=23.4ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "UNKNOWN", "sim_imsi2", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406920, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.800] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "14"} [2026-07-15 12:33:03.836] [DEBUG] QUERY OK db=36.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "14", "data_usage_mb", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406921, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.838] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:42:52Z", "value" => "0"} [2026-07-15 12:33:03.862] [DEBUG] QUERY OK db=23.8ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "0", "mobile_data_mb", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406922, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.868] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:42:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:33:03.906] [DEBUG] QUERY OK db=34.9ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:42:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47236, ~N[2026-07-15 12:33:03], ~N[2026-07-15 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:03.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406923, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:42:52Z", message: nil, status_log_id: 47236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:03], updated_at: ~N[2026-07-15 12:33:03]}} [2026-07-15 12:33:03.915] [DEBUG] QUERY OK source="tms_terminals" db=8.3ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:33:03.940] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:33:03.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=0.1ms idle=35.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:33:03.954] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=3.8ms idle=34.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:33:27.186] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:33:27.186] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:33:26Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:33:26Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:33:26Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:33:26Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:33:26Z","message":""}]} [2026-07-15 12:33:27.186] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:33:26Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:33:26Z"} [2026-07-15 12:33:27.186] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:33:27.188] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1616.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:33:27.188] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:33:27.220] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms queue=0.7ms idle=884.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:33:27], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:33:27.259] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms queue=0.2ms idle=32.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:33:27.313] [DEBUG] QUERY OK source="tms_terminals" db=53.5ms idle=39.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:33:27], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:33:27.350] [DEBUG] QUERY OK db=36.7ms idle=7.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:33:26Z", ~N[2026-07-15 12:33:27], ~N[2026-07-15 12:33:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:33:27.351] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47237, oid: "org-id-placeholder", upload_time: "2026-07-15T12:33:26Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:27], updated_at: ~N[2026-07-15 12:33:27]} [2026-07-15 12:33:27.351] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => 28} [2026-07-15 12:33:27.421] [DEBUG] QUERY OK db=69.4ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:33:26Z", "28", "battery", 47237, ~N[2026-07-15 12:33:27], ~N[2026-07-15 12:33:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:27.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406924, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:33:26Z", message: nil, status_log_id: 47237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:27], updated_at: ~N[2026-07-15 12:33:27]}} [2026-07-15 12:33:27.421] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:33:26Z", "value" => 50} [2026-07-15 12:33:27.470] [DEBUG] QUERY OK db=47.2ms queue=1.5ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:33:26Z", "50", "memory", 47237, ~N[2026-07-15 12:33:27], ~N[2026-07-15 12:33:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:27.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406925, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:33:26Z", message: "Normal", status_log_id: 47237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:27], updated_at: ~N[2026-07-15 12:33:27]}} [2026-07-15 12:33:27.471] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => 50} [2026-07-15 12:33:27.540] [DEBUG] QUERY OK db=68.4ms queue=0.4ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:33:26Z", "50", "cpu", 47237, ~N[2026-07-15 12:33:27], ~N[2026-07-15 12:33:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:27.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406926, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:33:26Z", message: nil, status_log_id: 47237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:27], updated_at: ~N[2026-07-15 12:33:27]}} [2026-07-15 12:33:27.541] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:33:26Z", "value" => "online"} [2026-07-15 12:33:27.573] [DEBUG] QUERY OK db=31.5ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:33:26Z", "online", "network", 47237, ~N[2026-07-15 12:33:27], ~N[2026-07-15 12:33:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:33:27.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406927, itemkey: "network", value: "online", timestamp: "2026-07-15T12:33:26Z", message: nil, status_log_id: 47237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:33:27], updated_at: ~N[2026-07-15 12:33:27]}} [2026-07-15 12:33:27.573] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:33:27.573] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:33:27.577] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-15 12:33:27.582] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:33:27.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.4ms queue=0.1ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:33:27.597] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms queue=0.6ms idle=18.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:33:50.516] [INFO ] Starting scheduled rule validation [2026-07-15 12:33:50.516] [DEBUG] Validating missing assignments [2026-07-15 12:33:50.518] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms queue=0.1ms idle=940.4ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-07-15 12:33:50.519] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=149.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-07-15 12:33:50.519] [DEBUG] Re-applied 0 rules during validation [2026-07-15 12:33:50.520] [DEBUG] Validating invalid assignments [2026-07-15 12:33:50.520] [DEBUG] Validating rule consistency [2026-07-15 12:33:50.520] [DEBUG] Updating group terminal counts [2026-07-15 12:33:50.522] [DEBUG] QUERY OK source="terminal_groups" db=1.3ms idle=2.4ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-07-15 12:33:50.522] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms idle=3.0ms 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-15 12:33:50.523] [DEBUG] QUERY OK source="terminal_groups" db=1.1ms idle=0.7ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-07-15 12:33:50.525] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=1.9ms 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-15 12:33:50.525] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=1.9ms 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-15 12:33:50.527] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms idle=0.7ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-07-15 12:33:50.528] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=2.0ms 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-15 12:33:50.530] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms idle=1.2ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-07-15 12:33:50.530] [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-15 12:33:50.532] [INFO ] Rule validation completed - applied 0 fixes [2026-07-15 12:33:52.318] [INFO ] Running offline device check... [2026-07-15 12:33:52.318] [INFO ] Starting offline device check... [2026-07-15 12:33:52.320] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=947.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-15 12:33:52.328] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=745.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:33:52.334] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.342] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.348] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.362] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=10.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.364] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.411] [DEBUG] QUERY OK source="tms_terminals" db=46.5ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:33:52], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:33:52.412] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:33:52.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=38.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:33:52.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=14.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.431] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.480] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=12.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:33:52], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:33:52.481] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:33:52.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=34.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:33:52.482] [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-15 12:33:52.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.494] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.503] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.504] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.507] [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-15 12:33:52.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:33:52.508] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:33:52.508] [INFO ] Offline device check completed successfully [2026-07-15 12:35:49.928] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:35:49.928] [INFO ] Incoming JSON payload: {"oid":"3885d2c6-422c-48cc-a89d-995503fd40b9","sn":"98250623730001","uploadTime":"2026-07-15T03:45:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:45:40Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:35:49.929] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3885d2c6-422c-48cc-a89d-995503fd40b9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:45:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:45:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:45:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:45:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:45:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:45:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:45:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:45:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:45:40Z", "vendor" => "morefun"} [2026-07-15 12:35:49.929] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:35:49.929] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:35:49.929] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:35:49.931] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=344.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-15 12:35:49.933] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=192.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-15 12:35:49.933] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:35:49.934] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:35:49.935] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:35:49.972] [DEBUG] QUERY OK source="tms_terminals" db=36.8ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:35:49], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:35:49.973] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:35:49.974] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:35:50.048] [DEBUG] QUERY OK source="tms_terminals" db=73.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:35:49], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:35:50.089] [DEBUG] QUERY OK db=40.7ms idle=74.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3885d2c6-422c-48cc-a89d-995503fd40b9", "2026-07-15T03:45:40Z", ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:35:50.090] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47238, oid: "3885d2c6-422c-48cc-a89d-995503fd40b9", upload_time: "2026-07-15T03:45:40Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]} [2026-07-15 12:35:50.090] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:45:40Z", "value" => "morefun"} [2026-07-15 12:35:50.125] [DEBUG] QUERY OK db=34.0ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "morefun", "vendor", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406928, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.126] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:45:40Z", "value" => "kiosk_launcher"} [2026-07-15 12:35:50.160] [DEBUG] QUERY OK db=33.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "kiosk_launcher", "model", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.160] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406929, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.161] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:45:40Z", "value" => "1.0"} [2026-07-15 12:35:50.189] [DEBUG] QUERY OK db=27.9ms 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-15T03:45:40Z", "1.0", "app_version", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406930, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.195] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:45:40Z", "value" => "13"} [2026-07-15 12:35:50.226] [DEBUG] QUERY OK db=30.5ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "13", "android_version", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406931, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.227] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "938"} [2026-07-15 12:35:50.266] [DEBUG] QUERY OK db=38.7ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "938", "ram_free_mb", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406932, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.266] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:45:40Z", "value" => "WIFI"} [2026-07-15 12:35:50.311] [DEBUG] QUERY OK db=43.7ms queue=0.2ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "WIFI", "network_type", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406933, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.311] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:45:40Z", "value" => "true"} [2026-07-15 12:35:50.340] [DEBUG] QUERY OK db=28.9ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "true", "kiosk_active", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406934, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.341] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:45:40Z", "value" => ""} [2026-07-15 12:35:50.376] [DEBUG] QUERY OK db=35.3ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:45:40Z", "sim_operator", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406935, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.377] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"} [2026-07-15 12:35:50.418] [DEBUG] QUERY OK db=40.4ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "UNKNOWN", "sim_number", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406936, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.418] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"} [2026-07-15 12:35:50.451] [DEBUG] QUERY OK db=32.6ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "UNKNOWN", "sim_iccid", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406937, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.452] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"} [2026-07-15 12:35:50.466] [DEBUG] QUERY OK db=14.0ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "UNKNOWN", "sim_imsi", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406938, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.470] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"} [2026-07-15 12:35:50.501] [DEBUG] QUERY OK db=31.1ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "UNKNOWN", "sim_iccid2", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406939, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.501] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:45:40Z", "value" => "UNKNOWN"} [2026-07-15 12:35:50.550] [DEBUG] QUERY OK db=48.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "UNKNOWN", "sim_imsi2", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406940, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.550] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "14"} [2026-07-15 12:35:50.575] [DEBUG] QUERY OK db=23.8ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "14", "data_usage_mb", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406941, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.575] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:45:40Z", "value" => "0"} [2026-07-15 12:35:50.609] [DEBUG] QUERY OK db=32.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "0", "mobile_data_mb", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406942, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.611] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:45:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:35:50.654] [DEBUG] QUERY OK db=41.8ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:45:40Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47238, ~N[2026-07-15 12:35:50], ~N[2026-07-15 12:35:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:35:50.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406943, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:45:40Z", message: nil, status_log_id: 47238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:35:50], updated_at: ~N[2026-07-15 12:35:50]}} [2026-07-15 12:35:50.662] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=51.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-15 12:35:50.673] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:35:50.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=1.0ms idle=22.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:35:50.688] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.9ms queue=0.7ms idle=23.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:20.136] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:36:20.136] [INFO ] Incoming JSON payload: {"oid":"1d701338-3fd1-47af-8a8c-5258d904b8d2","sn":"98250623730001","uploadTime":"2026-07-15T03:46:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:46:10Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:36:20.139] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1d701338-3fd1-47af-8a8c-5258d904b8d2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:46:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:46:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:46:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:46:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:46:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:46:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:46:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:46:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:46:10Z", "vendor" => "morefun"} [2026-07-15 12:36:20.139] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:36:20.139] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:36:20.140] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:36:20.144] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.2ms idle=555.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-15 12:36:20.147] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=281.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-15 12:36:20.147] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:36:20.149] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:36:20.151] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:36:20.175] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:36:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:36:20.176] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:36:20.177] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=26.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:36:20.204] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:36:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:36:20.234] [DEBUG] QUERY OK db=29.2ms idle=27.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "1d701338-3fd1-47af-8a8c-5258d904b8d2", "2026-07-15T03:46:10Z", ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:36:20.234] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47239, oid: "1d701338-3fd1-47af-8a8c-5258d904b8d2", upload_time: "2026-07-15T03:46:10Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]} [2026-07-15 12:36:20.234] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:46:10Z", "value" => "morefun"} [2026-07-15 12:36:20.277] [DEBUG] QUERY OK db=41.9ms queue=0.9ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "morefun", "vendor", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406944, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.277] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:46:10Z", "value" => "kiosk_launcher"} [2026-07-15 12:36:20.305] [DEBUG] QUERY OK db=27.3ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "kiosk_launcher", "model", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406945, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.305] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:46:10Z", "value" => "1.0"} [2026-07-15 12:36:20.330] [DEBUG] QUERY OK db=24.4ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "1.0", "app_version", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406946, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.331] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:46:10Z", "value" => "13"} [2026-07-15 12:36:20.374] [DEBUG] QUERY OK db=42.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "13", "android_version", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406947, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.374] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "937"} [2026-07-15 12:36:20.387] [DEBUG] QUERY OK db=12.7ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "937", "ram_free_mb", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406948, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.389] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:46:10Z", "value" => "WIFI"} [2026-07-15 12:36:20.404] [DEBUG] QUERY OK db=14.1ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "WIFI", "network_type", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406949, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.404] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:46:10Z", "value" => "true"} [2026-07-15 12:36:20.428] [DEBUG] QUERY OK db=23.6ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "true", "kiosk_active", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406950, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.429] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:46:10Z", "value" => ""} [2026-07-15 12:36:20.481] [DEBUG] QUERY OK db=52.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:46:10Z", "sim_operator", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406951, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.482] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"} [2026-07-15 12:36:20.503] [DEBUG] QUERY OK db=18.9ms queue=0.1ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "UNKNOWN", "sim_number", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406952, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"} [2026-07-15 12:36:20.518] [DEBUG] QUERY OK db=14.5ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "UNKNOWN", "sim_iccid", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406953, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.519] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"} [2026-07-15 12:36:20.543] [DEBUG] QUERY OK db=23.9ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "UNKNOWN", "sim_imsi", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406954, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.543] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"} [2026-07-15 12:36:20.573] [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-15T03:46:10Z", "UNKNOWN", "sim_iccid2", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406955, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.576] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:46:10Z", "value" => "UNKNOWN"} [2026-07-15 12:36:20.614] [DEBUG] QUERY OK db=37.0ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "UNKNOWN", "sim_imsi2", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406956, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.614] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "14"} [2026-07-15 12:36:20.634] [DEBUG] QUERY OK db=19.3ms queue=0.1ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "14", "data_usage_mb", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406957, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.635] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:46:10Z", "value" => "0"} [2026-07-15 12:36:20.651] [DEBUG] QUERY OK db=16.1ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "0", "mobile_data_mb", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406958, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.652] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:46:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:36:20.685] [DEBUG] QUERY OK db=31.7ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:10Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47239, ~N[2026-07-15 12:36:20], ~N[2026-07-15 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:20.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406959, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:46:10Z", message: nil, status_log_id: 47239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:20], updated_at: ~N[2026-07-15 12:36:20]}} [2026-07-15 12:36:20.691] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:36:20.712] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:25:54]}, %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-15 12:36:20.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms queue=1.0ms idle=35.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:20.730] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.8ms queue=0.8ms idle=35.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [43758, 47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:37.245] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:36:37.245] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"5489390-10-28T14:52:03Z","org.device":[{"itemkey":"status","value":"online","timestamp":"5489390-10-28T14:52:03Z","message":"Device Connected"}]} [2026-07-15 12:36:37.245] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "5489390-10-28T14:52:03Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "5489390-10-28T14:52:03Z"} [2026-07-15 12:36:37.245] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:36:37.246] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1335.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:36:37.246] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:36:37.289] [DEBUG] QUERY OK source="tms_terminals" db=42.5ms idle=334.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:36:37], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:36:37.290] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=43.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:36:37.323] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:36:37], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:36:37.360] [DEBUG] QUERY OK db=36.3ms queue=0.5ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "5489390-10-28T14:52:03Z", ~N[2026-07-15 12:36:37], ~N[2026-07-15 12:36:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:36:37.361] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47240, oid: "org-id-placeholder", upload_time: "5489390-10-28T14:52:03Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:37], updated_at: ~N[2026-07-15 12:36:37]} [2026-07-15 12:36:37.361] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "5489390-10-28T14:52:03Z", "value" => "online"} [2026-07-15 12:36:37.408] [DEBUG] QUERY OK db=47.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "5489390-10-28T14:52:03Z", "online", "status", 47240, ~N[2026-07-15 12:36:37], ~N[2026-07-15 12:36:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:37.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406960, itemkey: "status", value: "online", timestamp: "5489390-10-28T14:52:03Z", message: "Device Connected", status_log_id: 47240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:37], updated_at: ~N[2026-07-15 12:36:37]}} [2026-07-15 12:36:37.409] [INFO ] Setting terminal 61250424798001 status to 'online' from status itemkey [2026-07-15 12:36:37.409] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=48.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:36:37], 2] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 12:36:37.410] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:36:37.411] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:36:37], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-15 12:36:37.415] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=3.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:36:37.428] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:36:37.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=18.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:37.439] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.7ms idle=22.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:50.246] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:36:50.246] [INFO ] Incoming JSON payload: {"oid":"51fe0cab-32ac-4e76-ac31-998c2e520db3","sn":"98250623730001","uploadTime":"2026-07-15T03:46:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:46:40Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:36:50.249] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "51fe0cab-32ac-4e76-ac31-998c2e520db3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:46:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:46:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:46:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:46:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:46:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:46:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:46:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:46:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:46:40Z", "vendor" => "morefun"} [2026-07-15 12:36:50.249] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:36:50.249] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:36:50.249] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:36:50.251] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1301.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-15 12:36:50.252] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=299.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-15 12:36:50.252] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:36:50.256] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.8ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:36:50.257] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:36:50.283] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:36:50], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:36:50.283] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:36:50.284] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=27.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:36:50.313] [DEBUG] QUERY OK source="tms_terminals" db=28.2ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:36:50], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:36:50.374] [DEBUG] QUERY OK db=60.5ms idle=29.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "51fe0cab-32ac-4e76-ac31-998c2e520db3", "2026-07-15T03:46:40Z", ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:36:50.381] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47241, oid: "51fe0cab-32ac-4e76-ac31-998c2e520db3", upload_time: "2026-07-15T03:46:40Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]} [2026-07-15 12:36:50.381] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:46:40Z", "value" => "morefun"} [2026-07-15 12:36:50.428] [DEBUG] QUERY OK db=46.2ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "morefun", "vendor", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406961, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.429] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:46:40Z", "value" => "kiosk_launcher"} [2026-07-15 12:36:50.467] [DEBUG] QUERY OK db=38.2ms queue=0.1ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "kiosk_launcher", "model", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406962, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.468] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:46:40Z", "value" => "1.0"} [2026-07-15 12:36:50.512] [DEBUG] QUERY OK db=44.5ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "1.0", "app_version", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406963, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.513] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:46:40Z", "value" => "13"} [2026-07-15 12:36:50.557] [DEBUG] QUERY OK db=43.4ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "13", "android_version", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406964, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.557] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "936"} [2026-07-15 12:36:50.602] [DEBUG] QUERY OK db=44.6ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "936", "ram_free_mb", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406965, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.603] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:46:40Z", "value" => "WIFI"} [2026-07-15 12:36:50.626] [DEBUG] QUERY OK db=23.2ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "WIFI", "network_type", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406966, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.627] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:46:40Z", "value" => "true"} [2026-07-15 12:36:50.650] [DEBUG] QUERY OK db=22.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "true", "kiosk_active", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406967, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.650] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:46:40Z", "value" => ""} [2026-07-15 12:36:50.689] [DEBUG] QUERY OK db=38.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:46:40Z", "sim_operator", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406968, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.690] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"} [2026-07-15 12:36:50.718] [DEBUG] QUERY OK db=28.0ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "UNKNOWN", "sim_number", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406969, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.719] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"} [2026-07-15 12:36:50.771] [DEBUG] QUERY OK db=51.6ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "UNKNOWN", "sim_iccid", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406970, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.772] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"} [2026-07-15 12:36:50.817] [DEBUG] QUERY OK db=41.0ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "UNKNOWN", "sim_imsi", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406971, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.817] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"} [2026-07-15 12:36:50.853] [DEBUG] QUERY OK db=35.6ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "UNKNOWN", "sim_iccid2", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406972, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.853] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:46:40Z", "value" => "UNKNOWN"} [2026-07-15 12:36:50.876] [DEBUG] QUERY OK db=22.7ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "UNKNOWN", "sim_imsi2", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406973, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.877] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "14"} [2026-07-15 12:36:50.924] [DEBUG] QUERY OK db=46.1ms queue=0.3ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "14", "data_usage_mb", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406974, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.924] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:46:40Z", "value" => "0"} [2026-07-15 12:36:50.936] [DEBUG] QUERY OK db=11.3ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "0", "mobile_data_mb", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406975, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.937] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:46:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:36:50.994] [DEBUG] QUERY OK db=55.6ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:46:40Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47241, ~N[2026-07-15 12:36:50], ~N[2026-07-15 12:36:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:36:50.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406976, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:46:40Z", message: nil, status_log_id: 47241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:36:50], updated_at: ~N[2026-07-15 12:36:50]}} [2026-07-15 12:36:50.996] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=41.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-15 12:36:51.002] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:36:51.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=0.2ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:36:51.009] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:37:20.352] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:37:20.353] [INFO ] Incoming JSON payload: {"oid":"34747a99-9c70-4c93-9905-ec1a658a7b88","sn":"98250623730001","uploadTime":"2026-07-15T03:47:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:47:10Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:37:20.354] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "34747a99-9c70-4c93-9905-ec1a658a7b88", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:47:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:47:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:47:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:47:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:47:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:47:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:47:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:47:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:47:10Z", "vendor" => "morefun"} [2026-07-15 12:37:20.354] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:37:20.354] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:37:20.354] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:37:20.358] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=758.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-15 12:37:20.359] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.3ms idle=282.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-15 12:37:20.359] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:37:20.360] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:37:20.360] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:37:20.373] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:37:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:37:20.373] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:37:20.374] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=13.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:37:20.416] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:37:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:37:20.456] [DEBUG] QUERY OK db=38.9ms idle=42.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "34747a99-9c70-4c93-9905-ec1a658a7b88", "2026-07-15T03:47:10Z", ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:37:20.458] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47242, oid: "34747a99-9c70-4c93-9905-ec1a658a7b88", upload_time: "2026-07-15T03:47:10Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]} [2026-07-15 12:37:20.458] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:47:10Z", "value" => "morefun"} [2026-07-15 12:37:20.473] [DEBUG] QUERY OK db=14.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "morefun", "vendor", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406977, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.473] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:47:10Z", "value" => "kiosk_launcher"} [2026-07-15 12:37:20.498] [DEBUG] QUERY OK db=23.3ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "kiosk_launcher", "model", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406978, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.499] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:47:10Z", "value" => "1.0"} [2026-07-15 12:37:20.540] [DEBUG] QUERY OK db=40.1ms queue=0.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "1.0", "app_version", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406979, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.540] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:47:10Z", "value" => "13"} [2026-07-15 12:37:20.559] [DEBUG] QUERY OK db=17.7ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "13", "android_version", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406980, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.559] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "938"} [2026-07-15 12:37:20.576] [DEBUG] QUERY OK db=16.9ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "938", "ram_free_mb", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406981, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.577] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:47:10Z", "value" => "WIFI"} [2026-07-15 12:37:20.597] [DEBUG] QUERY OK db=20.1ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "WIFI", "network_type", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406982, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.598] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:47:10Z", "value" => "true"} [2026-07-15 12:37:20.632] [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-15T03:47:10Z", "true", "kiosk_active", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406983, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.633] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:47:10Z", "value" => ""} [2026-07-15 12:37:20.657] [DEBUG] QUERY OK db=23.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:47:10Z", "sim_operator", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406984, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.657] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"} [2026-07-15 12:37:20.686] [DEBUG] QUERY OK db=28.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "UNKNOWN", "sim_number", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406985, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.687] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"} [2026-07-15 12:37:20.708] [DEBUG] QUERY OK db=21.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "UNKNOWN", "sim_iccid", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406986, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.710] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"} [2026-07-15 12:37:20.745] [DEBUG] QUERY OK db=33.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "UNKNOWN", "sim_imsi", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406987, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.746] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"} [2026-07-15 12:37:20.776] [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-15T03:47:10Z", "UNKNOWN", "sim_iccid2", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406988, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.776] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:47:10Z", "value" => "UNKNOWN"} [2026-07-15 12:37:20.791] [DEBUG] QUERY OK db=14.0ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "UNKNOWN", "sim_imsi2", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406989, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.791] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "14"} [2026-07-15 12:37:20.815] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "14", "data_usage_mb", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406990, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.816] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:47:10Z", "value" => "0"} [2026-07-15 12:37:20.854] [DEBUG] QUERY OK db=37.6ms queue=0.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "0", "mobile_data_mb", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406991, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.856] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:47:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:37:20.883] [DEBUG] QUERY OK db=24.5ms queue=1.4ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:10Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47242, ~N[2026-07-15 12:37:20], ~N[2026-07-15 12:37:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:20.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406992, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:47:10Z", message: nil, status_log_id: 47242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:20], updated_at: ~N[2026-07-15 12:37:20]}} [2026-07-15 12:37:20.891] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms 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-15 12:37:20.906] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:37:20.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=26.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:37:20.919] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=1.9ms idle=25.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:37:50.965] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:37:50.965] [INFO ] Incoming JSON payload: {"oid":"52b063ac-196c-41b2-9d40-dfb0b1ca872b","sn":"98250623730001","uploadTime":"2026-07-15T03:47:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"ram_free_mb","value":"940","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:47:40Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:37:50.966] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "52b063ac-196c-41b2-9d40-dfb0b1ca872b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:47:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:47:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:47:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:47:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "940"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:47:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:47:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:47:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:47:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:47:40Z", "vendor" => "morefun"} [2026-07-15 12:37:50.966] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:37:50.966] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:37:50.966] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:37:50.967] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=363.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-15 12:37:50.968] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=116.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-15 12:37:50.968] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:37:50.969] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:37:50.969] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:37:50.999] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:37:50], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:37:50.999] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:37:51.000] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=30.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:37:51.045] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:37:51], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:37:51.100] [DEBUG] QUERY OK db=54.0ms idle=45.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "52b063ac-196c-41b2-9d40-dfb0b1ca872b", "2026-07-15T03:47:40Z", ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:37:51.100] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47243, oid: "52b063ac-196c-41b2-9d40-dfb0b1ca872b", upload_time: "2026-07-15T03:47:40Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]} [2026-07-15 12:37:51.100] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:47:40Z", "value" => "morefun"} [2026-07-15 12:37:51.144] [DEBUG] QUERY OK db=43.7ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "morefun", "vendor", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406993, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.145] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:47:40Z", "value" => "kiosk_launcher"} [2026-07-15 12:37:51.187] [DEBUG] QUERY OK db=41.5ms queue=0.1ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "kiosk_launcher", "model", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406994, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.187] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:47:40Z", "value" => "1.0"} [2026-07-15 12:37:51.238] [DEBUG] QUERY OK db=49.7ms queue=0.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "1.0", "app_version", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406995, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.238] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:47:40Z", "value" => "13"} [2026-07-15 12:37:51.267] [DEBUG] QUERY OK db=28.8ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "13", "android_version", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406996, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.268] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "940"} [2026-07-15 12:37:51.303] [DEBUG] QUERY OK db=34.5ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "940", "ram_free_mb", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406997, itemkey: "ram_free_mb", value: "940", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.304] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:47:40Z", "value" => "WIFI"} [2026-07-15 12:37:51.330] [DEBUG] QUERY OK db=25.5ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "WIFI", "network_type", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406998, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.330] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:47:40Z", "value" => "true"} [2026-07-15 12:37:51.355] [DEBUG] QUERY OK db=23.8ms 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-15T03:47:40Z", "true", "kiosk_active", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 406999, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.356] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:47:40Z", "value" => ""} [2026-07-15 12:37:51.392] [DEBUG] QUERY OK db=35.9ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:47:40Z", "sim_operator", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407000, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.392] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"} [2026-07-15 12:37:51.431] [DEBUG] QUERY OK db=38.1ms 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-15T03:47:40Z", "UNKNOWN", "sim_number", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407001, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.432] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"} [2026-07-15 12:37:51.455] [DEBUG] QUERY OK db=22.7ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "UNKNOWN", "sim_iccid", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407002, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.455] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"} [2026-07-15 12:37:51.487] [DEBUG] QUERY OK db=31.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-15T03:47:40Z", "UNKNOWN", "sim_imsi", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407003, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"} [2026-07-15 12:37:51.511] [DEBUG] QUERY OK db=22.7ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "UNKNOWN", "sim_iccid2", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407004, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.512] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:47:40Z", "value" => "UNKNOWN"} [2026-07-15 12:37:51.535] [DEBUG] QUERY OK db=22.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "UNKNOWN", "sim_imsi2", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407005, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.535] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "14"} [2026-07-15 12:37:51.556] [DEBUG] QUERY OK db=20.2ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "14", "data_usage_mb", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407006, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.556] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:47:40Z", "value" => "0"} [2026-07-15 12:37:51.603] [DEBUG] QUERY OK db=46.3ms 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-15T03:47:40Z", "0", "mobile_data_mb", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407007, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.604] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:47:40Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:37:51.629] [DEBUG] QUERY OK db=23.5ms queue=0.2ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:47:40Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47243, ~N[2026-07-15 12:37:51], ~N[2026-07-15 12:37:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:37:51.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407008, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:47:40Z", message: nil, status_log_id: 47243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:37:51], updated_at: ~N[2026-07-15 12:37:51]}} [2026-07-15 12:37:51.631] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=27.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:37:51.638] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:37:51.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=10.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:37:51.649] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.9ms queue=2.4ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:38:38.818] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:38:38.818] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:38:37Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:38:37Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:38:37Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:38:37Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:38:37Z","message":""}]} [2026-07-15 12:38:38.818] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:38:37Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:38:37Z"} [2026-07-15 12:38:38.818] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:38:38.819] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1210.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` = ?) ["61251020798002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:38:38.820] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:38:38.851] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=545.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:38:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:38:38.852] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:38:38.921] [DEBUG] QUERY OK source="tms_terminals" db=67.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:38:38], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:38:38.972] [DEBUG] QUERY OK db=50.7ms queue=0.1ms idle=68.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:38:37Z", ~N[2026-07-15 12:38:38], ~N[2026-07-15 12:38:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:38:38.972] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47244, oid: "org-id-placeholder", upload_time: "2026-07-15T12:38:37Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:38:38], updated_at: ~N[2026-07-15 12:38:38]} [2026-07-15 12:38:38.972] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => 28} [2026-07-15 12:38:39.018] [DEBUG] QUERY OK db=45.4ms queue=0.4ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:38:37Z", "28", "battery", 47244, ~N[2026-07-15 12:38:38], ~N[2026-07-15 12:38:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:38:39.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407009, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:38:37Z", message: nil, status_log_id: 47244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:38:38], updated_at: ~N[2026-07-15 12:38:38]}} [2026-07-15 12:38:39.019] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:38:37Z", "value" => 50} [2026-07-15 12:38:39.057] [DEBUG] QUERY OK db=35.9ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:38:37Z", "50", "memory", 47244, ~N[2026-07-15 12:38:39], ~N[2026-07-15 12:38:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:38:39.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407010, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:38:37Z", message: "Normal", status_log_id: 47244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:38:39], updated_at: ~N[2026-07-15 12:38:39]}} [2026-07-15 12:38:39.057] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => 50} [2026-07-15 12:38:39.109] [DEBUG] QUERY OK db=51.5ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:38:37Z", "50", "cpu", 47244, ~N[2026-07-15 12:38:39], ~N[2026-07-15 12:38:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:38:39.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407011, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:38:37Z", message: nil, status_log_id: 47244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:38:39], updated_at: ~N[2026-07-15 12:38:39]}} [2026-07-15 12:38:39.110] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:38:37Z", "value" => "online"} [2026-07-15 12:38:39.150] [DEBUG] QUERY OK db=39.0ms 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-15T12:38:37Z", "online", "network", 47244, ~N[2026-07-15 12:38:39], ~N[2026-07-15 12:38:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:38:39.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407012, itemkey: "network", value: "online", timestamp: "2026-07-15T12:38:37Z", message: nil, status_log_id: 47244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:38:39], updated_at: ~N[2026-07-15 12:38:39]}} [2026-07-15 12:38:39.151] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:38:39.154] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:38:39.158] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=47.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:38:39.164] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:38:39.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.4ms idle=14.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:38:39.180] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms queue=0.5ms idle=19.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:38:52.509] [INFO ] Running offline device check... [2026-07-15 12:38:52.509] [INFO ] Starting offline device check... [2026-07-15 12:38:52.511] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1196.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:38:52.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=196.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:38:52.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.525] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.527] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.1ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.569] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:38:52], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:38:52.569] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:38:52.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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-15 12:38:52.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=12.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.584] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.587] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.641] [DEBUG] QUERY OK source="tms_terminals" db=41.2ms queue=0.1ms idle=12.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:38:52], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:38:52.641] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:38:52.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=42.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:38:52.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.654] [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-15 12:38:52.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.664] [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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.668] [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-15 12:38:52.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:38:52.669] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:38:52.669] [INFO ] Offline device check completed successfully [2026-07-15 12:41:10.945] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:41:10.945] [INFO ] Incoming JSON payload: {"oid":"ee545c23-4f5b-46e0-bffa-48ed25c89a31","sn":"98250623730001","uploadTime":"2026-07-15T03:51:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"ram_free_mb","value":"937","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:51:01Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:41:10.946] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ee545c23-4f5b-46e0-bffa-48ed25c89a31", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:51:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:51:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:51:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:51:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "937"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:51:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:51:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:51:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:51:01Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:51:01Z", "vendor" => "morefun"} [2026-07-15 12:41:10.946] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:41:10.946] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:41:10.947] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:41:10.947] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1094.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-15 12:41:10.948] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=92.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-15 12:41:10.948] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:41:10.949] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:41:10.949] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:41:10.988] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:41:10], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:41:10.989] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:41:10.989] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=40.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:41:11.009] [DEBUG] QUERY OK source="tms_terminals" db=18.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:41:10], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:41:11.040] [DEBUG] QUERY OK db=30.7ms queue=0.1ms idle=19.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ee545c23-4f5b-46e0-bffa-48ed25c89a31", "2026-07-15T03:51:01Z", ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:41:11.040] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47245, oid: "ee545c23-4f5b-46e0-bffa-48ed25c89a31", upload_time: "2026-07-15T03:51:01Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]} [2026-07-15 12:41:11.041] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:51:01Z", "value" => "morefun"} [2026-07-15 12:41:11.065] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "morefun", "vendor", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407013, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.065] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:51:01Z", "value" => "kiosk_launcher"} [2026-07-15 12:41:11.092] [DEBUG] QUERY OK db=26.7ms 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-15T03:51:01Z", "kiosk_launcher", "model", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407014, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.093] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:51:01Z", "value" => "1.0"} [2026-07-15 12:41:11.131] [DEBUG] QUERY OK db=37.9ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "1.0", "app_version", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407015, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.133] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:51:01Z", "value" => "13"} [2026-07-15 12:41:11.155] [DEBUG] QUERY OK db=22.3ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "13", "android_version", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407016, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.157] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "937"} [2026-07-15 12:41:11.183] [DEBUG] QUERY OK db=26.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "937", "ram_free_mb", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407017, itemkey: "ram_free_mb", value: "937", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.184] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:51:01Z", "value" => "WIFI"} [2026-07-15 12:41:11.221] [DEBUG] QUERY OK db=36.4ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "WIFI", "network_type", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407018, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.221] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:51:01Z", "value" => "true"} [2026-07-15 12:41:11.267] [DEBUG] QUERY OK db=45.6ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "true", "kiosk_active", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407019, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.267] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:51:01Z", "value" => ""} [2026-07-15 12:41:11.305] [DEBUG] QUERY OK db=37.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:51:01Z", "sim_operator", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407020, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.305] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"} [2026-07-15 12:41:11.356] [DEBUG] QUERY OK db=50.1ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "UNKNOWN", "sim_number", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407021, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.356] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"} [2026-07-15 12:41:11.402] [DEBUG] QUERY OK db=45.2ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "UNKNOWN", "sim_iccid", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407022, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.402] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"} [2026-07-15 12:41:11.448] [DEBUG] QUERY OK db=44.6ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "UNKNOWN", "sim_imsi", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407023, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.448] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"} [2026-07-15 12:41:11.478] [DEBUG] QUERY OK db=30.0ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "UNKNOWN", "sim_iccid2", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407024, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.479] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:51:01Z", "value" => "UNKNOWN"} [2026-07-15 12:41:11.510] [DEBUG] QUERY OK db=31.0ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "UNKNOWN", "sim_imsi2", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407025, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.511] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "14"} [2026-07-15 12:41:11.555] [DEBUG] QUERY OK db=43.6ms queue=0.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "14", "data_usage_mb", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407026, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.555] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:51:01Z", "value" => "0"} [2026-07-15 12:41:11.613] [DEBUG] QUERY OK db=57.0ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "0", "mobile_data_mb", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407027, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.614] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:51:01Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:41:11.679] [DEBUG] QUERY OK db=64.3ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:01Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47245, ~N[2026-07-15 12:41:11], ~N[2026-07-15 12:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:11.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407028, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:51:01Z", message: nil, status_log_id: 47245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:11], updated_at: ~N[2026-07-15 12:41:11]}} [2026-07-15 12:41:11.681] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=67.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-15 12:41:11.686] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:41:11.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:41:11.692] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.6ms idle=9.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:41:41.128] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:41:41.129] [INFO ] Incoming JSON payload: {"oid":"19a2354d-84b5-4b6b-acbe-5bc73b9e24b7","sn":"98250623730001","uploadTime":"2026-07-15T03:51:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:51:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:51: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:41:41.131] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "19a2354d-84b5-4b6b-acbe-5bc73b9e24b7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:51:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:51:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:51:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:51:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:51:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:51:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:51:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:51: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:51:31Z", "vendor" => "morefun"} [2026-07-15 12:41:41.131] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:41:41.131] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:41:41.131] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:41:41.133] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1014.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-15 12:41:41.134] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=206.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-15 12:41:41.134] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:41:41.135] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:41:41.136] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:41:41.174] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:41:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:41:41.175] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:41:41.176] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:41:41.195] [DEBUG] QUERY OK source="tms_terminals" db=18.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:41:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:41:41.233] [DEBUG] QUERY OK db=37.5ms idle=19.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "19a2354d-84b5-4b6b-acbe-5bc73b9e24b7", "2026-07-15T03:51:31Z", ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:41:41.233] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47246, oid: "19a2354d-84b5-4b6b-acbe-5bc73b9e24b7", upload_time: "2026-07-15T03:51:31Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]} [2026-07-15 12:41:41.233] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:51:31Z", "value" => "morefun"} [2026-07-15 12:41:41.256] [DEBUG] QUERY OK db=22.6ms queue=0.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "morefun", "vendor", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407029, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.257] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:51:31Z", "value" => "kiosk_launcher"} [2026-07-15 12:41:41.315] [DEBUG] QUERY OK db=58.2ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "kiosk_launcher", "model", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407030, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.316] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:51:31Z", "value" => "1.0"} [2026-07-15 12:41:41.357] [DEBUG] QUERY OK db=40.5ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "1.0", "app_version", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407031, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.357] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:51:31Z", "value" => "13"} [2026-07-15 12:41:41.416] [DEBUG] QUERY OK db=58.4ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "13", "android_version", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407032, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.416] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "934"} [2026-07-15 12:41:41.462] [DEBUG] QUERY OK db=45.7ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "934", "ram_free_mb", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407033, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.463] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:51:31Z", "value" => "WIFI"} [2026-07-15 12:41:41.487] [DEBUG] QUERY OK db=23.2ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "WIFI", "network_type", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407034, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.488] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:51:31Z", "value" => "true"} [2026-07-15 12:41:41.521] [DEBUG] QUERY OK db=33.0ms queue=0.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "true", "kiosk_active", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407035, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.522] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:51:31Z", "value" => ""} [2026-07-15 12:41:41.564] [DEBUG] QUERY OK db=41.5ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:51:31Z", "sim_operator", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407036, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.565] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"} [2026-07-15 12:41:41.588] [DEBUG] QUERY OK db=23.3ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "UNKNOWN", "sim_number", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407037, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.589] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"} [2026-07-15 12:41:41.621] [DEBUG] QUERY OK db=30.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "UNKNOWN", "sim_iccid", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407038, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"} [2026-07-15 12:41:41.656] [DEBUG] QUERY OK db=34.5ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "UNKNOWN", "sim_imsi", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407039, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.657] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"} [2026-07-15 12:41:41.680] [DEBUG] QUERY OK db=22.7ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "UNKNOWN", "sim_iccid2", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407040, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.680] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:51:31Z", "value" => "UNKNOWN"} [2026-07-15 12:41:41.704] [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-15T03:51:31Z", "UNKNOWN", "sim_imsi2", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407041, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.704] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "14"} [2026-07-15 12:41:41.741] [DEBUG] QUERY OK db=36.0ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "14", "data_usage_mb", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407042, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.742] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:51:31Z", "value" => "0"} [2026-07-15 12:41:41.775] [DEBUG] QUERY OK db=32.7ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51:31Z", "0", "mobile_data_mb", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407043, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.778] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:51: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:41:41.816] [DEBUG] QUERY OK db=37.0ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:51: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47246, ~N[2026-07-15 12:41:41], ~N[2026-07-15 12:41:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:41.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407044, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:51:31Z", message: nil, status_log_id: 47246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:41], updated_at: ~N[2026-07-15 12:41:41]}} [2026-07-15 12:41:41.820] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=43.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-15 12:41:41.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:36:37]}, %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-15 12:41:41.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:41:41.836] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=2.4ms idle=13.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47140, 47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:41:49.603] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:41:49.603] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:41:46Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:41:46Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:41:46Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:41:46Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:41:46Z","message":""}]} [2026-07-15 12:41:49.603] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:41:46Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:41:46Z"} [2026-07-15 12:41:49.603] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:41:49.604] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1657.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:41:49.604] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:41:49.631] [DEBUG] QUERY OK source="tms_terminals" db=26.1ms idle=655.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:41:49], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:41:49.633] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=26.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:41:49.678] [DEBUG] QUERY OK source="tms_terminals" db=44.4ms queue=0.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:41:49], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:41:49.706] [DEBUG] QUERY OK db=27.8ms idle=45.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:41:46Z", ~N[2026-07-15 12:41:49], ~N[2026-07-15 12:41:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:41:49.707] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47247, oid: "org-id-placeholder", upload_time: "2026-07-15T16:41:46Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:49], updated_at: ~N[2026-07-15 12:41:49]} [2026-07-15 12:41:49.707] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => 29} [2026-07-15 12:41:49.730] [DEBUG] QUERY OK db=22.6ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:41:46Z", "29", "battery", 47247, ~N[2026-07-15 12:41:49], ~N[2026-07-15 12:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:49.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407045, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:41:46Z", message: nil, status_log_id: 47247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:49], updated_at: ~N[2026-07-15 12:41:49]}} [2026-07-15 12:41:49.730] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:41:46Z", "value" => 50} [2026-07-15 12:41:49.792] [DEBUG] QUERY OK db=60.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:41:46Z", "50", "memory", 47247, ~N[2026-07-15 12:41:49], ~N[2026-07-15 12:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:49.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407046, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:41:46Z", message: "Normal", status_log_id: 47247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:49], updated_at: ~N[2026-07-15 12:41:49]}} [2026-07-15 12:41:49.793] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => 50} [2026-07-15 12:41:49.859] [DEBUG] QUERY OK db=65.4ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:41:46Z", "50", "cpu", 47247, ~N[2026-07-15 12:41:49], ~N[2026-07-15 12:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:49.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407047, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:41:46Z", message: nil, status_log_id: 47247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:49], updated_at: ~N[2026-07-15 12:41:49]}} [2026-07-15 12:41:49.859] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:41:46Z", "value" => "online"} [2026-07-15 12:41:49.906] [DEBUG] QUERY OK db=46.2ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:41:46Z", "online", "network", 47247, ~N[2026-07-15 12:41:49], ~N[2026-07-15 12:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:41:49.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407048, itemkey: "network", value: "online", timestamp: "2026-07-15T16:41:46Z", message: nil, status_log_id: 47247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:41:49], updated_at: ~N[2026-07-15 12:41:49]}} [2026-07-15 12:41:49.906] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:41:49.907] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:41:49.911] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=51.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-15 12:41:49.917] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:41:49.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:41:49.923] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=10.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:42:11.364] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:42:11.365] [INFO ] Incoming JSON payload: {"oid":"78ee079f-d79f-4d8b-a710-f1808e6a702f","sn":"98250623730001","uploadTime":"2026-07-15T03:52:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:52:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:42:11.366] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "78ee079f-d79f-4d8b-a710-f1808e6a702f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:52:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:52:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:52:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:52:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:52:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:52:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:52:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:52:01Z", "vendor" => "morefun"} [2026-07-15 12:42:11.366] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:42:11.366] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:42:11.367] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:42:11.367] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=726.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-15 12:42:11.368] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=314.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-15 12:42:11.369] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:42:11.369] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:42:11.370] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:42:11.384] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:42:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:42:11.384] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:42:11.385] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=14.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:42:11.403] [DEBUG] QUERY OK source="tms_terminals" db=17.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:42:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:42:11.426] [DEBUG] QUERY OK db=22.4ms idle=18.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "78ee079f-d79f-4d8b-a710-f1808e6a702f", "2026-07-15T03:52:01Z", ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:42:11.426] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47248, oid: "78ee079f-d79f-4d8b-a710-f1808e6a702f", upload_time: "2026-07-15T03:52:01Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]} [2026-07-15 12:42:11.426] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:52:01Z", "value" => "morefun"} [2026-07-15 12:42:11.469] [DEBUG] QUERY OK db=42.3ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "morefun", "vendor", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407049, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.469] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:52:01Z", "value" => "kiosk_launcher"} [2026-07-15 12:42:11.498] [DEBUG] QUERY OK db=28.0ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "kiosk_launcher", "model", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407050, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.498] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:52:01Z", "value" => "1.0"} [2026-07-15 12:42:11.520] [DEBUG] QUERY OK db=21.7ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "1.0", "app_version", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407051, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.521] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:52:01Z", "value" => "13"} [2026-07-15 12:42:11.552] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "13", "android_version", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407052, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.552] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "932"} [2026-07-15 12:42:11.601] [DEBUG] QUERY OK db=48.4ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "932", "ram_free_mb", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407053, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.602] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:52:01Z", "value" => "WIFI"} [2026-07-15 12:42:11.614] [DEBUG] QUERY OK db=11.3ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "WIFI", "network_type", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407054, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.614] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:52:01Z", "value" => "true"} [2026-07-15 12:42:11.635] [DEBUG] QUERY OK db=20.2ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "true", "kiosk_active", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407055, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.635] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:52:01Z", "value" => ""} [2026-07-15 12:42:11.688] [DEBUG] QUERY OK db=52.0ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:52:01Z", "sim_operator", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407056, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.688] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"} [2026-07-15 12:42:11.714] [DEBUG] QUERY OK db=24.9ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "UNKNOWN", "sim_number", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407057, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.715] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"} [2026-07-15 12:42:11.735] [DEBUG] QUERY OK db=19.8ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "UNKNOWN", "sim_iccid", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407058, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.735] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"} [2026-07-15 12:42:11.799] [DEBUG] QUERY OK db=62.7ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "UNKNOWN", "sim_imsi", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407059, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.799] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"} [2026-07-15 12:42:11.825] [DEBUG] QUERY OK db=25.4ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "UNKNOWN", "sim_iccid2", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407060, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.826] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:52:01Z", "value" => "UNKNOWN"} [2026-07-15 12:42:11.840] [DEBUG] QUERY OK db=14.4ms queue=0.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "UNKNOWN", "sim_imsi2", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407061, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.841] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "14"} [2026-07-15 12:42:11.878] [DEBUG] QUERY OK db=36.9ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "14", "data_usage_mb", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407062, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.879] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:52:01Z", "value" => "0"} [2026-07-15 12:42:11.941] [DEBUG] QUERY OK db=61.5ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:01Z", "0", "mobile_data_mb", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407063, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.942] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:42:11.964] [DEBUG] QUERY OK db=20.9ms queue=0.1ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47248, ~N[2026-07-15 12:42:11], ~N[2026-07-15 12:42:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:11.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407064, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:52:01Z", message: nil, status_log_id: 47248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:11], updated_at: ~N[2026-07-15 12:42:11]}} [2026-07-15 12:42:11.966] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=24.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:42:11.972] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:42:11.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:42:11.980] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms queue=1.7ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:42:41.263] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:42:41.263] [INFO ] Incoming JSON payload: {"oid":"432c969d-8882-4d84-a862-46a05c9e0267","sn":"98250623730001","uploadTime":"2026-07-15T03:52:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"ram_free_mb","value":"938","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:52:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:42:41.265] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "432c969d-8882-4d84-a862-46a05c9e0267", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:52:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:52:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:52:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:52:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "938"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:52:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:52:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:52:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:52:31Z", "vendor" => "morefun"} [2026-07-15 12:42:41.265] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:42:41.265] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:42:41.265] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:42:41.266] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=623.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-15 12:42:41.267] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=130.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-15 12:42:41.268] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:42:41.269] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.8ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:42:41.269] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:42:41.319] [DEBUG] QUERY OK source="tms_terminals" db=49.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:42:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:42:41.319] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:42:41.320] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=50.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:42:41.394] [DEBUG] QUERY OK source="tms_terminals" db=72.7ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:42:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:42:41.425] [DEBUG] QUERY OK db=30.6ms idle=73.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "432c969d-8882-4d84-a862-46a05c9e0267", "2026-07-15T03:52:31Z", ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:42:41.425] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47249, oid: "432c969d-8882-4d84-a862-46a05c9e0267", upload_time: "2026-07-15T03:52:31Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]} [2026-07-15 12:42:41.425] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:52:31Z", "value" => "morefun"} [2026-07-15 12:42:41.465] [DEBUG] QUERY OK db=39.2ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "morefun", "vendor", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407065, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.465] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:52:31Z", "value" => "kiosk_launcher"} [2026-07-15 12:42:41.509] [DEBUG] QUERY OK db=43.8ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "kiosk_launcher", "model", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407066, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.510] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:52:31Z", "value" => "1.0"} [2026-07-15 12:42:41.578] [DEBUG] QUERY OK db=66.8ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "1.0", "app_version", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407067, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.578] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:52:31Z", "value" => "13"} [2026-07-15 12:42:41.638] [DEBUG] QUERY OK db=59.0ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "13", "android_version", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407068, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.638] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "938"} [2026-07-15 12:42:41.675] [DEBUG] QUERY OK db=36.5ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "938", "ram_free_mb", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407069, itemkey: "ram_free_mb", value: "938", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.676] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:52:31Z", "value" => "WIFI"} [2026-07-15 12:42:41.723] [DEBUG] QUERY OK db=46.3ms queue=0.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "WIFI", "network_type", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407070, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.723] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:52:31Z", "value" => "true"} [2026-07-15 12:42:41.757] [DEBUG] QUERY OK db=33.2ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "true", "kiosk_active", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407071, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.757] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:52:31Z", "value" => ""} [2026-07-15 12:42:41.793] [DEBUG] QUERY OK db=35.9ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:52:31Z", "sim_operator", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407072, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.794] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"} [2026-07-15 12:42:41.839] [DEBUG] QUERY OK db=44.3ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "UNKNOWN", "sim_number", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407073, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.839] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"} [2026-07-15 12:42:41.864] [DEBUG] QUERY OK db=24.1ms queue=0.2ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "UNKNOWN", "sim_iccid", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407074, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.864] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"} [2026-07-15 12:42:41.909] [DEBUG] QUERY OK db=44.7ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "UNKNOWN", "sim_imsi", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407075, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.910] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"} [2026-07-15 12:42:41.943] [DEBUG] QUERY OK db=32.7ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "UNKNOWN", "sim_iccid2", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407076, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.944] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:52:31Z", "value" => "UNKNOWN"} [2026-07-15 12:42:41.976] [DEBUG] QUERY OK db=31.9ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "UNKNOWN", "sim_imsi2", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:41.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407077, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:41.977] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "14"} [2026-07-15 12:42:42.002] [DEBUG] QUERY OK db=25.1ms queue=0.3ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "14", "data_usage_mb", 47249, ~N[2026-07-15 12:42:41], ~N[2026-07-15 12:42:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:42.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407078, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:41], updated_at: ~N[2026-07-15 12:42:41]}} [2026-07-15 12:42:42.003] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:52:31Z", "value" => "0"} [2026-07-15 12:42:42.032] [DEBUG] QUERY OK db=28.2ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52:31Z", "0", "mobile_data_mb", 47249, ~N[2026-07-15 12:42:42], ~N[2026-07-15 12:42:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:42.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407079, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:42], updated_at: ~N[2026-07-15 12:42:42]}} [2026-07-15 12:42:42.033] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:42:42.081] [DEBUG] QUERY OK db=47.2ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:52: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47249, ~N[2026-07-15 12:42:42], ~N[2026-07-15 12:42:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:42:42.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407080, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:52:31Z", message: nil, status_log_id: 47249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:42:42], updated_at: ~N[2026-07-15 12:42:42]}} [2026-07-15 12:42:42.083] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=50.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-15 12:42:42.089] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:42:42.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:42:42.097] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:43:11.453] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:43:11.453] [INFO ] Incoming JSON payload: {"oid":"20412287-925a-40bb-8e8f-7cd3d38c94dc","sn":"98250623730001","uploadTime":"2026-07-15T03:53:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:53:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:43:11.454] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "20412287-925a-40bb-8e8f-7cd3d38c94dc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:53:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:53:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:53:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:53:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:53:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:53:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:53:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:53:01Z", "vendor" => "morefun"} [2026-07-15 12:43:11.455] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:43:11.455] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:43:11.455] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:43:11.457] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=810.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-15 12:43:11.458] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=233.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-15 12:43:11.459] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:43:11.460] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:43:11.460] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:43:11.498] [DEBUG] QUERY OK source="tms_terminals" db=37.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:43:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:43:11.498] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:43:11.499] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:43:11.542] [DEBUG] QUERY OK source="tms_terminals" db=42.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:43:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:43:11.570] [DEBUG] QUERY OK db=27.1ms queue=0.2ms idle=43.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "20412287-925a-40bb-8e8f-7cd3d38c94dc", "2026-07-15T03:53:01Z", ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:43:11.570] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47250, oid: "20412287-925a-40bb-8e8f-7cd3d38c94dc", upload_time: "2026-07-15T03:53:01Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]} [2026-07-15 12:43:11.570] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:53:01Z", "value" => "morefun"} [2026-07-15 12:43:11.594] [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-15T03:53:01Z", "morefun", "vendor", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407081, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.595] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:53:01Z", "value" => "kiosk_launcher"} [2026-07-15 12:43:11.669] [DEBUG] QUERY OK db=73.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "kiosk_launcher", "model", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407082, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.669] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:53:01Z", "value" => "1.0"} [2026-07-15 12:43:11.693] [DEBUG] QUERY OK db=22.7ms queue=0.2ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "1.0", "app_version", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407083, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.693] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:53:01Z", "value" => "13"} [2026-07-15 12:43:11.727] [DEBUG] QUERY OK db=32.9ms queue=0.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "13", "android_version", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407084, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.727] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "936"} [2026-07-15 12:43:11.785] [DEBUG] QUERY OK db=57.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "936", "ram_free_mb", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407085, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.785] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:53:01Z", "value" => "WIFI"} [2026-07-15 12:43:11.823] [DEBUG] QUERY OK db=36.7ms queue=0.1ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "WIFI", "network_type", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407086, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.823] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:53:01Z", "value" => "true"} [2026-07-15 12:43:11.872] [DEBUG] QUERY OK db=47.8ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "true", "kiosk_active", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407087, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.873] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:53:01Z", "value" => ""} [2026-07-15 12:43:11.899] [DEBUG] QUERY OK db=25.6ms queue=0.3ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:53:01Z", "sim_operator", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407088, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.900] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"} [2026-07-15 12:43:11.921] [DEBUG] QUERY OK db=21.1ms queue=0.1ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "UNKNOWN", "sim_number", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407089, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.922] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"} [2026-07-15 12:43:11.974] [DEBUG] QUERY OK db=52.0ms queue=0.1ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "UNKNOWN", "sim_iccid", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:11.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407090, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:11.975] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"} [2026-07-15 12:43:12.014] [DEBUG] QUERY OK db=37.9ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "UNKNOWN", "sim_imsi", 47250, ~N[2026-07-15 12:43:11], ~N[2026-07-15 12:43:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407091, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:11], updated_at: ~N[2026-07-15 12:43:11]}} [2026-07-15 12:43:12.015] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"} [2026-07-15 12:43:12.053] [DEBUG] QUERY OK db=37.8ms queue=0.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "UNKNOWN", "sim_iccid2", 47250, ~N[2026-07-15 12:43:12], ~N[2026-07-15 12:43:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407092, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:12], updated_at: ~N[2026-07-15 12:43:12]}} [2026-07-15 12:43:12.054] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:53:01Z", "value" => "UNKNOWN"} [2026-07-15 12:43:12.093] [DEBUG] QUERY OK db=38.3ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "UNKNOWN", "sim_imsi2", 47250, ~N[2026-07-15 12:43:12], ~N[2026-07-15 12:43:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407093, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:12], updated_at: ~N[2026-07-15 12:43:12]}} [2026-07-15 12:43:12.093] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "14"} [2026-07-15 12:43:12.137] [DEBUG] QUERY OK db=42.5ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "14", "data_usage_mb", 47250, ~N[2026-07-15 12:43:12], ~N[2026-07-15 12:43:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407094, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:12], updated_at: ~N[2026-07-15 12:43:12]}} [2026-07-15 12:43:12.139] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:53:01Z", "value" => "0"} [2026-07-15 12:43:12.180] [DEBUG] QUERY OK db=40.1ms queue=0.5ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53:01Z", "0", "mobile_data_mb", 47250, ~N[2026-07-15 12:43:12], ~N[2026-07-15 12:43:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407095, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:12], updated_at: ~N[2026-07-15 12:43:12]}} [2026-07-15 12:43:12.181] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:43:12.214] [DEBUG] QUERY OK db=32.6ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:53: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47250, ~N[2026-07-15 12:43:12], ~N[2026-07-15 12:43:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:12.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407096, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:53:01Z", message: nil, status_log_id: 47250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:12], updated_at: ~N[2026-07-15 12:43:12]}} [2026-07-15 12:43:12.221] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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-15 12:43:12.226] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:43:12.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:43:12.232] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.6ms idle=2.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:43:50.498] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 12:43:50.500] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=849.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-15 12:43:50.504] [DEBUG] QUERY OK source="filter_usage" db=3.1ms queue=0.1ms idle=182.3ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-07-15 12:43:50.504] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 12:43:52.559] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:43:52.559] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:43:51Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:43:51Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:43:51Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:43:51Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:43:51Z","message":""}]} [2026-07-15 12:43:52.560] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:43:51Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:43:51Z"} [2026-07-15 12:43:52.560] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:43:52.562] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=912.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-15 12:43:52.562] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:43:52.586] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=238.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:43:52], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:43:52.587] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["61251020798002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:43:52.616] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:43:52], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:43:52.648] [DEBUG] QUERY OK db=31.0ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:43:51Z", ~N[2026-07-15 12:43:52], ~N[2026-07-15 12:43:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:43:52.648] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47251, oid: "org-id-placeholder", upload_time: "2026-07-15T12:43:51Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:52], updated_at: ~N[2026-07-15 12:43:52]} [2026-07-15 12:43:52.648] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => 28} [2026-07-15 12:43:52.671] [INFO ] Running offline device check... [2026-07-15 12:43:52.671] [INFO ] Starting offline device check... [2026-07-15 12:43:52.672] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=23.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:43:52.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.686] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.687] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.690] [DEBUG] QUERY OK db=41.8ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:43:51Z", "28", "battery", 47251, ~N[2026-07-15 12:43:52], ~N[2026-07-15 12:43:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:52.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407097, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:43:51Z", message: nil, status_log_id: 47251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:52], updated_at: ~N[2026-07-15 12:43:52]}} [2026-07-15 12:43:52.691] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:43:51Z", "value" => 50} [2026-07-15 12:43:52.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.697] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.719] [DEBUG] QUERY OK db=27.3ms queue=0.1ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:43:51Z", "50", "memory", 47251, ~N[2026-07-15 12:43:52], ~N[2026-07-15 12:43:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:52.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407098, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:43:51Z", message: "Normal", status_log_id: 47251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:52], updated_at: ~N[2026-07-15 12:43:52]}} [2026-07-15 12:43:52.719] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => 50} [2026-07-15 12:43:52.741] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:43:52], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:43:52.741] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:43:52.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 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-15 12:43:52.753] [DEBUG] QUERY OK db=33.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:43:51Z", "50", "cpu", 47251, ~N[2026-07-15 12:43:52], ~N[2026-07-15 12:43:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:52.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407099, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:43:51Z", message: nil, status_log_id: 47251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:52], updated_at: ~N[2026-07-15 12:43:52]}} [2026-07-15 12:43:52.754] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:43:51Z", "value" => "online"} [2026-07-15 12:43:52.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.761] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.764] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.764] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.784] [DEBUG] QUERY OK db=29.6ms queue=0.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:43:51Z", "online", "network", 47251, ~N[2026-07-15 12:43:52], ~N[2026-07-15 12:43:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:43:52.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407100, itemkey: "network", value: "online", timestamp: "2026-07-15T12:43:51Z", message: nil, status_log_id: 47251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:43:52], updated_at: ~N[2026-07-15 12:43:52]}} [2026-07-15 12:43:52.784] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:43:52.784] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:43:52.790] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:43:52.796] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:43:52.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:43:52.806] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.0ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:43:52.841] [DEBUG] QUERY OK source="tms_terminals" db=64.0ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:43:52], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:43:52.841] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:43:52.848] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.6ms idle=8.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.867] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 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-15 12:43:52.877] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.879] [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-15 12:43:52.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.881] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.882] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.883] [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-15 12:43:52.883] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:43:52.884] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:43:52.884] [INFO ] Offline device check completed successfully [2026-07-15 12:45:56.746] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:45:56.746] [INFO ] Incoming JSON payload: {"oid":"bd400724-501a-4c96-8ae2-5bb3d6f275bb","sn":"98250623730001","uploadTime":"2026-07-15T03:55:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:55:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:45:56.747] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bd400724-501a-4c96-8ae2-5bb3d6f275bb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:55:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:55:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:55:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:55:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:55:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:55:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:55:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:55:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:55:46Z", "vendor" => "morefun"} [2026-07-15 12:45:56.747] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:45:56.747] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:45:56.747] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:45:56.749] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=90.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-15 12:45:56.750] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.3ms idle=63.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-15 12:45:56.751] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:45:56.752] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:45:56.753] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:45:56.769] [DEBUG] QUERY OK source="tms_terminals" db=15.8ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:45:56], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:45:56.769] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:45:56.770] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:45:56.825] [DEBUG] QUERY OK source="tms_terminals" db=54.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:45:56], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:45:56.849] [DEBUG] QUERY OK db=23.3ms idle=55.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "bd400724-501a-4c96-8ae2-5bb3d6f275bb", "2026-07-15T03:55:46Z", ~N[2026-07-15 12:45:56], ~N[2026-07-15 12:45:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:45:56.849] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47252, oid: "bd400724-501a-4c96-8ae2-5bb3d6f275bb", upload_time: "2026-07-15T03:55:46Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:56], updated_at: ~N[2026-07-15 12:45:56]} [2026-07-15 12:45:56.849] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:55:46Z", "value" => "morefun"} [2026-07-15 12:45:56.889] [DEBUG] QUERY OK db=39.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "morefun", "vendor", 47252, ~N[2026-07-15 12:45:56], ~N[2026-07-15 12:45:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:56.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407101, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:56], updated_at: ~N[2026-07-15 12:45:56]}} [2026-07-15 12:45:56.890] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:55:46Z", "value" => "kiosk_launcher"} [2026-07-15 12:45:56.923] [DEBUG] QUERY OK db=32.8ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "kiosk_launcher", "model", 47252, ~N[2026-07-15 12:45:56], ~N[2026-07-15 12:45:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:56.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407102, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:56], updated_at: ~N[2026-07-15 12:45:56]}} [2026-07-15 12:45:56.924] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:55:46Z", "value" => "1.0"} [2026-07-15 12:45:56.981] [DEBUG] QUERY OK db=56.8ms queue=0.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "1.0", "app_version", 47252, ~N[2026-07-15 12:45:56], ~N[2026-07-15 12:45:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:56.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407103, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:56], updated_at: ~N[2026-07-15 12:45:56]}} [2026-07-15 12:45:56.982] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:55:46Z", "value" => "13"} [2026-07-15 12:45:57.015] [DEBUG] QUERY OK db=32.6ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "13", "android_version", 47252, ~N[2026-07-15 12:45:56], ~N[2026-07-15 12:45:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407104, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:56], updated_at: ~N[2026-07-15 12:45:56]}} [2026-07-15 12:45:57.016] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "929"} [2026-07-15 12:45:57.045] [DEBUG] QUERY OK db=28.0ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "929", "ram_free_mb", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407105, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.045] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:55:46Z", "value" => "WIFI"} [2026-07-15 12:45:57.090] [DEBUG] QUERY OK db=44.7ms queue=0.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "WIFI", "network_type", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407106, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.091] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:55:46Z", "value" => "true"} [2026-07-15 12:45:57.127] [DEBUG] QUERY OK db=36.0ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "true", "kiosk_active", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407107, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.128] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:55:46Z", "value" => ""} [2026-07-15 12:45:57.183] [DEBUG] QUERY OK db=54.4ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:55:46Z", "sim_operator", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407108, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.183] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"} [2026-07-15 12:45:57.244] [DEBUG] QUERY OK db=61.0ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "UNKNOWN", "sim_number", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407109, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.245] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"} [2026-07-15 12:45:57.300] [DEBUG] QUERY OK db=54.3ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "UNKNOWN", "sim_iccid", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407110, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.300] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"} [2026-07-15 12:45:57.349] [DEBUG] QUERY OK db=48.3ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "UNKNOWN", "sim_imsi", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407111, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.349] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"} [2026-07-15 12:45:57.385] [DEBUG] QUERY OK db=35.2ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "UNKNOWN", "sim_iccid2", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407112, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.385] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:55:46Z", "value" => "UNKNOWN"} [2026-07-15 12:45:57.443] [DEBUG] QUERY OK db=57.0ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "UNKNOWN", "sim_imsi2", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407113, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.443] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "14"} [2026-07-15 12:45:57.488] [DEBUG] QUERY OK db=44.2ms queue=0.6ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "14", "data_usage_mb", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407114, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.490] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:55:46Z", "value" => "0"} [2026-07-15 12:45:57.533] [DEBUG] QUERY OK db=43.2ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "0", "mobile_data_mb", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407115, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.535] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:55:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:45:57.580] [DEBUG] QUERY OK db=44.4ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:55:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47252, ~N[2026-07-15 12:45:57], ~N[2026-07-15 12:45:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:45:57.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407116, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:55:46Z", message: nil, status_log_id: 47252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:45:57], updated_at: ~N[2026-07-15 12:45:57]}} [2026-07-15 12:45:57.583] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=48.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:45:57.588] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:41:49]}, %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-15 12:45:57.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:45:57.595] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.9ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47147, 47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:03.273] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:47:03.273] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:47:00Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:47:00Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:47:00Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:47:00Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:47:00Z","message":""}]} [2026-07-15 12:47:03.277] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:47:00Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:47:00Z"} [2026-07-15 12:47:03.279] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:47:03.284] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=1382.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:47:03.284] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:47:03.309] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=0.1ms idle=382.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:47:03], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:47:03.313] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=1.3ms idle=28.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:47:03.343] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:47:03], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:47:03.379] [DEBUG] QUERY OK db=36.2ms idle=30.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:47:00Z", ~N[2026-07-15 12:47:03], ~N[2026-07-15 12:47:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:47:03.380] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47253, oid: "org-id-placeholder", upload_time: "2026-07-15T16:47:00Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:03], updated_at: ~N[2026-07-15 12:47:03]} [2026-07-15 12:47:03.381] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => 29} [2026-07-15 12:47:03.406] [DEBUG] QUERY OK db=24.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:47:00Z", "29", "battery", 47253, ~N[2026-07-15 12:47:03], ~N[2026-07-15 12:47:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:03.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407117, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:47:00Z", message: nil, status_log_id: 47253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:03], updated_at: ~N[2026-07-15 12:47:03]}} [2026-07-15 12:47:03.410] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:47:00Z", "value" => 50} [2026-07-15 12:47:03.444] [DEBUG] QUERY OK db=33.0ms queue=0.1ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:47:00Z", "50", "memory", 47253, ~N[2026-07-15 12:47:03], ~N[2026-07-15 12:47:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:03.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407118, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:47:00Z", message: "Normal", status_log_id: 47253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:03], updated_at: ~N[2026-07-15 12:47:03]}} [2026-07-15 12:47:03.444] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => 50} [2026-07-15 12:47:03.487] [DEBUG] QUERY OK db=39.5ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:47:00Z", "50", "cpu", 47253, ~N[2026-07-15 12:47:03], ~N[2026-07-15 12:47:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:03.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407119, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:47:00Z", message: nil, status_log_id: 47253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:03], updated_at: ~N[2026-07-15 12:47:03]}} [2026-07-15 12:47:03.487] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:47:00Z", "value" => "online"} [2026-07-15 12:47:03.552] [DEBUG] QUERY OK db=64.6ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:47:00Z", "online", "network", 47253, ~N[2026-07-15 12:47:03], ~N[2026-07-15 12:47:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:03.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407120, itemkey: "network", value: "online", timestamp: "2026-07-15T16:47:00Z", message: nil, status_log_id: 47253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:03], updated_at: ~N[2026-07-15 12:47:03]}} [2026-07-15 12:47:03.553] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:47:03.553] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:47:03.565] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.2ms idle=76.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-15 12:47:03.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:47:03.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.3ms idle=19.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:03.587] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=3.2ms idle=18.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:12.007] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:47:12.007] [INFO ] Incoming JSON payload: {"oid":"bcead35b-724e-49ed-8977-c2781ae728c9","sn":"98250623730001","uploadTime":"2026-07-15T03:57:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:57:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:47:12.009] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bcead35b-724e-49ed-8977-c2781ae728c9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:57:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:57:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:57:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:57:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:57:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:57:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:57:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:57:01Z", "vendor" => "morefun"} [2026-07-15 12:47:12.009] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:47:12.010] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:47:12.010] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:47:12.011] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1081.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-15 12:47:12.012] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=80.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-15 12:47:12.012] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:47:12.013] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:47:12.013] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:47:12.047] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:47:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:47:12.047] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:47:12.049] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=34.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:47:12.078] [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-15 12:47:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:47:12.106] [DEBUG] QUERY OK db=28.2ms idle=28.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "bcead35b-724e-49ed-8977-c2781ae728c9", "2026-07-15T03:57:01Z", ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:47:12.107] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47254, oid: "bcead35b-724e-49ed-8977-c2781ae728c9", upload_time: "2026-07-15T03:57:01Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]} [2026-07-15 12:47:12.107] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:57:01Z", "value" => "morefun"} [2026-07-15 12:47:12.154] [DEBUG] QUERY OK db=47.3ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "morefun", "vendor", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407121, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.155] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:57:01Z", "value" => "kiosk_launcher"} [2026-07-15 12:47:12.185] [DEBUG] QUERY OK db=29.3ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "kiosk_launcher", "model", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407122, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.186] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:57:01Z", "value" => "1.0"} [2026-07-15 12:47:12.209] [DEBUG] QUERY OK db=23.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "1.0", "app_version", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407123, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.210] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:57:01Z", "value" => "13"} [2026-07-15 12:47:12.238] [DEBUG] QUERY OK db=26.9ms queue=0.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "13", "android_version", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407124, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.239] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "936"} [2026-07-15 12:47:12.280] [DEBUG] QUERY OK db=40.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "936", "ram_free_mb", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407125, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.280] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:57:01Z", "value" => "WIFI"} [2026-07-15 12:47:12.304] [DEBUG] QUERY OK db=22.9ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "WIFI", "network_type", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407126, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.304] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:57:01Z", "value" => "true"} [2026-07-15 12:47:12.326] [DEBUG] QUERY OK db=20.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "true", "kiosk_active", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407127, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.326] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:57:01Z", "value" => ""} [2026-07-15 12:47:12.354] [DEBUG] QUERY OK db=27.6ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:57:01Z", "sim_operator", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407128, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.354] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"} [2026-07-15 12:47:12.401] [DEBUG] QUERY OK db=46.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "UNKNOWN", "sim_number", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407129, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.402] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"} [2026-07-15 12:47:12.425] [DEBUG] QUERY OK db=23.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "UNKNOWN", "sim_iccid", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407130, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.426] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"} [2026-07-15 12:47:12.468] [DEBUG] QUERY OK db=41.3ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "UNKNOWN", "sim_imsi", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407131, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.468] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"} [2026-07-15 12:47:12.529] [DEBUG] QUERY OK db=60.3ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "UNKNOWN", "sim_iccid2", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407132, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.529] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:57:01Z", "value" => "UNKNOWN"} [2026-07-15 12:47:12.580] [DEBUG] QUERY OK db=50.5ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "UNKNOWN", "sim_imsi2", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407133, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.581] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "14"} [2026-07-15 12:47:12.627] [DEBUG] QUERY OK db=45.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "14", "data_usage_mb", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407134, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.627] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:57:01Z", "value" => "0"} [2026-07-15 12:47:12.660] [DEBUG] QUERY OK db=32.7ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:01Z", "0", "mobile_data_mb", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407135, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.661] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:47:12.738] [DEBUG] QUERY OK db=75.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47254, ~N[2026-07-15 12:47:12], ~N[2026-07-15 12:47:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:12.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407136, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:57:01Z", message: nil, status_log_id: 47254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:12], updated_at: ~N[2026-07-15 12:47:12]}} [2026-07-15 12:47:12.740] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=78.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-15 12:47:12.744] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:47:12.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:12.749] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.3ms idle=7.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:41.910] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:47:41.910] [INFO ] Incoming JSON payload: {"oid":"21917424-616c-4af9-8f86-36439c7cbed3","sn":"98250623730001","uploadTime":"2026-07-15T03:57:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:57:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:47:41.911] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "21917424-616c-4af9-8f86-36439c7cbed3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:57:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:57:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:57:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:57:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:57:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:57:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:57:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:57:32Z", "vendor" => "morefun"} [2026-07-15 12:47:41.911] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:47:41.911] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:47:41.911] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:47:41.912] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms decode=0.1ms queue=0.1ms idle=899.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-15 12:47:41.914] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=247.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-15 12:47:41.914] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:47:41.916] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:47:41.916] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:47:41.936] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:47:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:47:41.936] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:47:41.937] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=20.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:47:41.973] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:47:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:47:41.997] [DEBUG] QUERY OK db=23.1ms idle=36.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "21917424-616c-4af9-8f86-36439c7cbed3", "2026-07-15T03:57:32Z", ~N[2026-07-15 12:47:41], ~N[2026-07-15 12:47:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:47:41.997] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47255, oid: "21917424-616c-4af9-8f86-36439c7cbed3", upload_time: "2026-07-15T03:57:32Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:41], updated_at: ~N[2026-07-15 12:47:41]} [2026-07-15 12:47:41.997] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:57:32Z", "value" => "morefun"} [2026-07-15 12:47:42.026] [DEBUG] QUERY OK db=27.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "morefun", "vendor", 47255, ~N[2026-07-15 12:47:41], ~N[2026-07-15 12:47:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407137, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:41], updated_at: ~N[2026-07-15 12:47:41]}} [2026-07-15 12:47:42.026] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:57:32Z", "value" => "kiosk_launcher"} [2026-07-15 12:47:42.074] [DEBUG] QUERY OK db=47.8ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "kiosk_launcher", "model", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407138, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.075] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:57:32Z", "value" => "1.0"} [2026-07-15 12:47:42.119] [DEBUG] QUERY OK db=44.3ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "1.0", "app_version", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407139, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.120] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:57:32Z", "value" => "13"} [2026-07-15 12:47:42.168] [DEBUG] QUERY OK db=48.2ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "13", "android_version", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407140, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.170] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "933"} [2026-07-15 12:47:42.195] [DEBUG] QUERY OK db=25.3ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "933", "ram_free_mb", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407141, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.196] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:57:32Z", "value" => "WIFI"} [2026-07-15 12:47:42.229] [DEBUG] QUERY OK db=32.7ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "WIFI", "network_type", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407142, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.230] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:57:32Z", "value" => "true"} [2026-07-15 12:47:42.255] [DEBUG] QUERY OK db=25.4ms queue=0.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "true", "kiosk_active", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407143, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.256] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:57:32Z", "value" => ""} [2026-07-15 12:47:42.268] [DEBUG] QUERY OK db=12.0ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:57:32Z", "sim_operator", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407144, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.269] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"} [2026-07-15 12:47:42.310] [DEBUG] QUERY OK db=39.6ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "UNKNOWN", "sim_number", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407145, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.310] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"} [2026-07-15 12:47:42.350] [DEBUG] QUERY OK db=39.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "UNKNOWN", "sim_iccid", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407146, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.350] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"} [2026-07-15 12:47:42.375] [DEBUG] QUERY OK db=24.8ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "UNKNOWN", "sim_imsi", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407147, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.376] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"} [2026-07-15 12:47:42.409] [DEBUG] QUERY OK db=33.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "UNKNOWN", "sim_iccid2", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407148, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:57:32Z", "value" => "UNKNOWN"} [2026-07-15 12:47:42.422] [DEBUG] QUERY OK db=11.3ms queue=0.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "UNKNOWN", "sim_imsi2", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407149, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.422] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "14"} [2026-07-15 12:47:42.463] [DEBUG] QUERY OK db=40.3ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "14", "data_usage_mb", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407150, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.464] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:57:32Z", "value" => "0"} [2026-07-15 12:47:42.487] [DEBUG] QUERY OK db=23.3ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57:32Z", "0", "mobile_data_mb", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407151, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.489] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:47:42.514] [DEBUG] QUERY OK db=24.0ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:57: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47255, ~N[2026-07-15 12:47:42], ~N[2026-07-15 12:47:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:47:42.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407152, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:57:32Z", message: nil, status_log_id: 47255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:47:42], updated_at: ~N[2026-07-15 12:47:42]}} [2026-07-15 12:47:42.519] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms 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-15 12:47:42.525] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:47:42.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=11.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:47:42.533] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.6ms idle=11.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:48:12.115] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:48:12.115] [INFO ] Incoming JSON payload: {"oid":"833608e3-2d91-43c0-80fc-153417a23a8c","sn":"98250623730001","uploadTime":"2026-07-15T03:58:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:58:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:48:12.116] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "833608e3-2d91-43c0-80fc-153417a23a8c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:58:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:58:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:58:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:58:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:58:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:58:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:58:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:58:02Z", "vendor" => "morefun"} [2026-07-15 12:48:12.116] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:48:12.117] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:48:12.117] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:48:12.122] [DEBUG] QUERY OK source="parameter_templates" db=5.1ms queue=0.1ms idle=1012.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-15 12:48:12.124] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=16.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 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-15 12:48:12.124] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:48:12.126] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:48:12.126] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:48:12.154] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:48:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:48:12.154] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:48:12.156] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=29.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:48:12.199] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms queue=0.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:48:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:48:12.222] [DEBUG] QUERY OK db=22.7ms idle=43.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "833608e3-2d91-43c0-80fc-153417a23a8c", "2026-07-15T03:58:02Z", ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:48:12.222] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47256, oid: "833608e3-2d91-43c0-80fc-153417a23a8c", upload_time: "2026-07-15T03:58:02Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]} [2026-07-15 12:48:12.222] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:58:02Z", "value" => "morefun"} [2026-07-15 12:48:12.259] [DEBUG] QUERY OK db=36.1ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "morefun", "vendor", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407153, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.259] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:58:02Z", "value" => "kiosk_launcher"} [2026-07-15 12:48:12.315] [DEBUG] QUERY OK db=55.2ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "kiosk_launcher", "model", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407154, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.316] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:58:02Z", "value" => "1.0"} [2026-07-15 12:48:12.366] [DEBUG] QUERY OK db=50.4ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "1.0", "app_version", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407155, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.367] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:58:02Z", "value" => "13"} [2026-07-15 12:48:12.404] [DEBUG] QUERY OK db=37.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "13", "android_version", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407156, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.405] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "931"} [2026-07-15 12:48:12.455] [DEBUG] QUERY OK db=49.6ms queue=0.1ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "931", "ram_free_mb", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407157, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.455] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:58:02Z", "value" => "WIFI"} [2026-07-15 12:48:12.486] [DEBUG] QUERY OK db=29.9ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "WIFI", "network_type", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407158, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.486] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:58:02Z", "value" => "true"} [2026-07-15 12:48:12.526] [DEBUG] QUERY OK db=39.6ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "true", "kiosk_active", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407159, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.526] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:58:02Z", "value" => ""} [2026-07-15 12:48:12.558] [DEBUG] QUERY OK db=30.8ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:58:02Z", "sim_operator", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407160, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.558] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"} [2026-07-15 12:48:12.581] [DEBUG] QUERY OK db=22.7ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "UNKNOWN", "sim_number", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407161, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.582] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"} [2026-07-15 12:48:12.614] [DEBUG] QUERY OK db=31.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "UNKNOWN", "sim_iccid", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407162, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.614] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"} [2026-07-15 12:48:12.658] [DEBUG] QUERY OK db=43.4ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "UNKNOWN", "sim_imsi", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407163, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.659] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"} [2026-07-15 12:48:12.701] [DEBUG] QUERY OK db=40.9ms queue=0.5ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "UNKNOWN", "sim_iccid2", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407164, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.701] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:58:02Z", "value" => "UNKNOWN"} [2026-07-15 12:48:12.725] [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-15T03:58:02Z", "UNKNOWN", "sim_imsi2", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407165, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.725] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "14"} [2026-07-15 12:48:12.769] [DEBUG] QUERY OK db=42.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "14", "data_usage_mb", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407166, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.769] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:58:02Z", "value" => "0"} [2026-07-15 12:48:12.816] [DEBUG] QUERY OK db=46.3ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:02Z", "0", "mobile_data_mb", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407167, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.817] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:48:12.849] [DEBUG] QUERY OK db=29.5ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47256, ~N[2026-07-15 12:48:12], ~N[2026-07-15 12:48:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:12.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407168, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:58:02Z", message: nil, status_log_id: 47256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:12], updated_at: ~N[2026-07-15 12:48:12]}} [2026-07-15 12:48:12.852] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=35.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:48:12.857] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:48:12.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:48:12.863] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:48:42.221] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:48:42.222] [INFO ] Incoming JSON payload: {"oid":"ad62887c-acf8-4c1c-b9dc-f5d212713822","sn":"98250623730001","uploadTime":"2026-07-15T03:58:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:58:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:48:42.223] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ad62887c-acf8-4c1c-b9dc-f5d212713822", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:58:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:58:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:58:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:58:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:58:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:58:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:58:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:58:32Z", "vendor" => "morefun"} [2026-07-15 12:48:42.224] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:48:42.225] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:48:42.225] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:48:42.226] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=558.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-15 12:48:42.226] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=41.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-15 12:48:42.227] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:48:42.228] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:48:42.229] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:48:42.253] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:48:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:48:42.253] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:48:42.254] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=24.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:48:42.288] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:48:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:48:42.321] [DEBUG] QUERY OK db=32.2ms idle=34.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ad62887c-acf8-4c1c-b9dc-f5d212713822", "2026-07-15T03:58:32Z", ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:48:42.321] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47257, oid: "ad62887c-acf8-4c1c-b9dc-f5d212713822", upload_time: "2026-07-15T03:58:32Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]} [2026-07-15 12:48:42.321] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:58:32Z", "value" => "morefun"} [2026-07-15 12:48:42.346] [DEBUG] QUERY OK db=23.6ms queue=0.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "morefun", "vendor", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407169, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.346] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:58:32Z", "value" => "kiosk_launcher"} [2026-07-15 12:48:42.396] [DEBUG] QUERY OK db=49.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "kiosk_launcher", "model", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407170, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.397] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:58:32Z", "value" => "1.0"} [2026-07-15 12:48:42.420] [DEBUG] QUERY OK db=22.3ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "1.0", "app_version", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407171, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.421] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:58:32Z", "value" => "13"} [2026-07-15 12:48:42.445] [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-15T03:58:32Z", "13", "android_version", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407172, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.445] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "930"} [2026-07-15 12:48:42.486] [DEBUG] QUERY OK db=40.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "930", "ram_free_mb", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407173, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.486] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:58:32Z", "value" => "WIFI"} [2026-07-15 12:48:42.509] [DEBUG] QUERY OK db=22.7ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "WIFI", "network_type", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407174, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.510] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:58:32Z", "value" => "true"} [2026-07-15 12:48:42.539] [DEBUG] QUERY OK db=28.7ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "true", "kiosk_active", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407175, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.539] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:58:32Z", "value" => ""} [2026-07-15 12:48:42.572] [DEBUG] QUERY OK db=32.6ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:58:32Z", "sim_operator", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407176, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.573] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"} [2026-07-15 12:48:42.599] [DEBUG] QUERY OK db=25.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "UNKNOWN", "sim_number", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407177, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.600] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"} [2026-07-15 12:48:42.657] [DEBUG] QUERY OK db=56.2ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "UNKNOWN", "sim_iccid", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407178, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.657] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"} [2026-07-15 12:48:42.694] [DEBUG] QUERY OK db=36.2ms queue=0.1ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "UNKNOWN", "sim_imsi", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407179, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.694] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"} [2026-07-15 12:48:42.737] [DEBUG] QUERY OK db=42.7ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "UNKNOWN", "sim_iccid2", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407180, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.738] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:58:32Z", "value" => "UNKNOWN"} [2026-07-15 12:48:42.761] [DEBUG] QUERY OK db=23.0ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "UNKNOWN", "sim_imsi2", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407181, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.761] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "14"} [2026-07-15 12:48:42.785] [DEBUG] QUERY OK db=23.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "14", "data_usage_mb", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407182, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.785] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:58:32Z", "value" => "0"} [2026-07-15 12:48:42.828] [DEBUG] QUERY OK db=42.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58:32Z", "0", "mobile_data_mb", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407183, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.830] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:48:42.864] [DEBUG] QUERY OK db=33.1ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:58: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47257, ~N[2026-07-15 12:48:42], ~N[2026-07-15 12:48:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:48:42.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407184, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:58:32Z", message: nil, status_log_id: 47257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:48:42], updated_at: ~N[2026-07-15 12:48:42]}} [2026-07-15 12:48:42.867] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=37.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:48:42.873] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:48:42.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:48:42.881] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.7ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:48:52.884] [INFO ] Running offline device check... [2026-07-15 12:48:52.884] [INFO ] Starting offline device check... [2026-07-15 12:48:52.886] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=675.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:48:52.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=219.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:48:52.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.905] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.910] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.962] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:48:52], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:48:52.962] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:48:52.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:52.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.043] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms decode=0.6ms idle=18.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:48:53], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:48:53.045] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:48:53.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=39.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:48:53.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.053] [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 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-15 12:48:53.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=7.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.068] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.070] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.071] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.072] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:48:53.073] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:48:53.073] [INFO ] Offline device check completed successfully [2026-07-15 12:49:04.627] [INFO ] Received status update for terminal 61251020798002 [2026-07-15 12:49:04.627] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61251020798002","uploadTime":"2026-07-15T12:49:02Z","org.device":[{"itemkey":"battery","value":28,"timestamp":"2026-07-15T12:49:02Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T12:49:02Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T12:49:02Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T12:49:02Z","message":""}]} [2026-07-15 12:49:04.627] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => 28}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:49:02Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => "online"}], "sn" => "61251020798002", "uploadTime" => "2026-07-15T12:49:02Z"} [2026-07-15 12:49:04.627] [INFO ] Extracted versions for 61251020798002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:49:04.629] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=818.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-15 12:49:04.629] [INFO ] Terminal updated: 61251020798002 [2026-07-15 12:49:04.665] [DEBUG] QUERY OK source="tms_terminals" db=35.1ms idle=385.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:49:04], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:49:04.666] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=36.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-15 12:49:04.700] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:49:04], 11] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:49:04.724] [DEBUG] QUERY OK db=22.8ms queue=0.3ms idle=34.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [11, "org-id-placeholder", "2026-07-15T12:49:02Z", ~N[2026-07-15 12:49:04], ~N[2026-07-15 12:49:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:49:04.724] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47258, oid: "org-id-placeholder", upload_time: "2026-07-15T12:49:02Z", terminal_id: 11, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:04], updated_at: ~N[2026-07-15 12:49:04]} [2026-07-15 12:49:04.725] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => 28} [2026-07-15 12:49:04.748] [DEBUG] QUERY OK db=23.5ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:49:02Z", "28", "battery", 47258, ~N[2026-07-15 12:49:04], ~N[2026-07-15 12:49:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:04.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407185, itemkey: "battery", value: "28", timestamp: "2026-07-15T12:49:02Z", message: nil, status_log_id: 47258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:04], updated_at: ~N[2026-07-15 12:49:04]}} [2026-07-15 12:49:04.749] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T12:49:02Z", "value" => 50} [2026-07-15 12:49:04.792] [DEBUG] QUERY OK db=42.6ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T12:49:02Z", "50", "memory", 47258, ~N[2026-07-15 12:49:04], ~N[2026-07-15 12:49:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:04.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407186, itemkey: "memory", value: "50", timestamp: "2026-07-15T12:49:02Z", message: "Normal", status_log_id: 47258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:04], updated_at: ~N[2026-07-15 12:49:04]}} [2026-07-15 12:49:04.793] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => 50} [2026-07-15 12:49:04.816] [DEBUG] QUERY OK db=22.2ms queue=0.1ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T12:49:02Z", "50", "cpu", 47258, ~N[2026-07-15 12:49:04], ~N[2026-07-15 12:49:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:04.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407187, itemkey: "cpu", value: "50", timestamp: "2026-07-15T12:49:02Z", message: nil, status_log_id: 47258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:04], updated_at: ~N[2026-07-15 12:49:04]}} [2026-07-15 12:49:04.816] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T12:49:02Z", "value" => "online"} [2026-07-15 12:49:04.849] [DEBUG] QUERY OK db=31.4ms 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-15T12:49:02Z", "online", "network", 47258, ~N[2026-07-15 12:49:04], ~N[2026-07-15 12:49:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:04.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407188, itemkey: "network", value: "online", timestamp: "2026-07-15T12:49:02Z", message: nil, status_log_id: 47258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:04], updated_at: ~N[2026-07-15 12:49:04]}} [2026-07-15 12:49:04.849] [INFO ] Setting terminal 61251020798002 status to 'online' from network itemkey [2026-07-15 12:49:04.849] [INFO ] Terminal 61251020798002 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:49:04.854] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=36.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:49:04.858] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:49:04.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms queue=0.3ms idle=10.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:49:04.869] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.0ms idle=12.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:49:12.431] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:49:12.431] [INFO ] Incoming JSON payload: {"oid":"d18cfbf3-cf4f-49f0-97d9-f78b3f6e2405","sn":"98250623730001","uploadTime":"2026-07-15T03:59:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:59:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:49:12.432] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d18cfbf3-cf4f-49f0-97d9-f78b3f6e2405", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:59:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:59:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:59:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:59:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:59:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:59:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:59:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:59:02Z", "vendor" => "morefun"} [2026-07-15 12:49:12.433] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:49:12.433] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:49:12.433] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:49:12.433] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1171.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-15 12:49:12.435] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=169.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-15 12:49:12.435] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:49:12.436] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:49:12.436] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:49:12.473] [DEBUG] QUERY OK source="tms_terminals" db=36.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:49:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:49:12.473] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:49:12.474] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=37.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:49:12.491] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:49:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:49:12.516] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=17.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "d18cfbf3-cf4f-49f0-97d9-f78b3f6e2405", "2026-07-15T03:59:02Z", ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:49:12.517] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47259, oid: "d18cfbf3-cf4f-49f0-97d9-f78b3f6e2405", upload_time: "2026-07-15T03:59:02Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]} [2026-07-15 12:49:12.517] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:59:02Z", "value" => "morefun"} [2026-07-15 12:49:12.549] [DEBUG] QUERY OK db=30.4ms queue=0.5ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "morefun", "vendor", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407189, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.549] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:59:02Z", "value" => "kiosk_launcher"} [2026-07-15 12:49:12.572] [DEBUG] QUERY OK db=22.5ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "kiosk_launcher", "model", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407190, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.573] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:59:02Z", "value" => "1.0"} [2026-07-15 12:49:12.602] [DEBUG] QUERY OK db=28.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "1.0", "app_version", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407191, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.602] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:59:02Z", "value" => "13"} [2026-07-15 12:49:12.635] [DEBUG] QUERY OK db=32.8ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "13", "android_version", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407192, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.636] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "931"} [2026-07-15 12:49:12.692] [DEBUG] QUERY OK db=55.4ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "931", "ram_free_mb", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407193, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.692] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:59:02Z", "value" => "WIFI"} [2026-07-15 12:49:12.744] [DEBUG] QUERY OK db=51.7ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "WIFI", "network_type", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407194, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.745] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:59:02Z", "value" => "true"} [2026-07-15 12:49:12.779] [DEBUG] QUERY OK db=34.1ms queue=0.1ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "true", "kiosk_active", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407195, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.780] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:59:02Z", "value" => ""} [2026-07-15 12:49:12.803] [DEBUG] QUERY OK db=22.6ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:59:02Z", "sim_operator", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407196, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.803] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"} [2026-07-15 12:49:12.827] [DEBUG] QUERY OK db=23.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "UNKNOWN", "sim_number", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407197, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.827] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"} [2026-07-15 12:49:12.861] [DEBUG] QUERY OK db=33.2ms 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-15T03:59:02Z", "UNKNOWN", "sim_iccid", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407198, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.862] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"} [2026-07-15 12:49:12.893] [DEBUG] QUERY OK db=29.9ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "UNKNOWN", "sim_imsi", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407199, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.893] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"} [2026-07-15 12:49:12.916] [DEBUG] QUERY OK db=22.5ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "UNKNOWN", "sim_iccid2", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407200, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.916] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:59:02Z", "value" => "UNKNOWN"} [2026-07-15 12:49:12.939] [DEBUG] QUERY OK db=22.4ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "UNKNOWN", "sim_imsi2", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407201, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.940] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "14"} [2026-07-15 12:49:12.963] [DEBUG] QUERY OK db=23.1ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:02Z", "14", "data_usage_mb", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407202, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.964] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:59:02Z", "value" => "0"} [2026-07-15 12:49:12.990] [DEBUG] QUERY OK db=25.3ms 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-15T03:59:02Z", "0", "mobile_data_mb", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:12.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407203, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:12.991] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:49:13.027] [DEBUG] QUERY OK db=35.0ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47259, ~N[2026-07-15 12:49:12], ~N[2026-07-15 12:49:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:13.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407204, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:59:02Z", message: nil, status_log_id: 47259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:12], updated_at: ~N[2026-07-15 12:49:12]}} [2026-07-15 12:49:13.030] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=38.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:49:13.033] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:49:13.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:49:13.039] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=8.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:49:42.434] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:49:42.434] [INFO ] Incoming JSON payload: {"oid":"d2173b08-28f3-4456-b9dc-7f61024feb2f","sn":"98250623730001","uploadTime":"2026-07-15T03:59:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T03:59:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:49:42.436] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d2173b08-28f3-4456-b9dc-7f61024feb2f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:59:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T03:59:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:59:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:59:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:59:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:59:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:59:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T03:59:32Z", "vendor" => "morefun"} [2026-07-15 12:49:42.436] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:49:42.436] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:49:42.436] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:49:42.438] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=766.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-15 12:49:42.439] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=94.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-15 12:49:42.439] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:49:42.439] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:49:42.440] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:49:42.463] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:49:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:49:42.463] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:49:42.465] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:49:42.511] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:49:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:49:42.546] [DEBUG] QUERY OK db=32.8ms idle=47.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "d2173b08-28f3-4456-b9dc-7f61024feb2f", "2026-07-15T03:59:32Z", ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:49:42.546] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47260, oid: "d2173b08-28f3-4456-b9dc-7f61024feb2f", upload_time: "2026-07-15T03:59:32Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]} [2026-07-15 12:49:42.546] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T03:59:32Z", "value" => "morefun"} [2026-07-15 12:49:42.570] [DEBUG] QUERY OK db=23.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "morefun", "vendor", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407205, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.570] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T03:59:32Z", "value" => "kiosk_launcher"} [2026-07-15 12:49:42.618] [DEBUG] QUERY OK db=47.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "kiosk_launcher", "model", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407206, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.619] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T03:59:32Z", "value" => "1.0"} [2026-07-15 12:49:42.649] [DEBUG] QUERY OK db=29.7ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "1.0", "app_version", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407207, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.650] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T03:59:32Z", "value" => "13"} [2026-07-15 12:49:42.667] [DEBUG] QUERY OK db=17.4ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "13", "android_version", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407208, itemkey: "android_version", value: "13", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.668] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "933"} [2026-07-15 12:49:42.704] [DEBUG] QUERY OK db=35.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "933", "ram_free_mb", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407209, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.704] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T03:59:32Z", "value" => "WIFI"} [2026-07-15 12:49:42.727] [DEBUG] QUERY OK db=22.8ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "WIFI", "network_type", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407210, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.728] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T03:59:32Z", "value" => "true"} [2026-07-15 12:49:42.751] [DEBUG] QUERY OK db=23.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "true", "kiosk_active", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407211, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.752] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T03:59:32Z", "value" => ""} [2026-07-15 12:49:42.803] [DEBUG] QUERY OK db=51.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T03:59:32Z", "sim_operator", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407212, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.804] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"} [2026-07-15 12:49:42.840] [DEBUG] QUERY OK db=35.7ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "UNKNOWN", "sim_number", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407213, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.841] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"} [2026-07-15 12:49:42.882] [DEBUG] QUERY OK db=40.1ms 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-15T03:59:32Z", "UNKNOWN", "sim_iccid", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407214, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.883] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"} [2026-07-15 12:49:42.931] [DEBUG] QUERY OK db=47.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "UNKNOWN", "sim_imsi", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407215, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.931] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"} [2026-07-15 12:49:42.968] [DEBUG] QUERY OK db=36.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "UNKNOWN", "sim_iccid2", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407216, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.968] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T03:59:32Z", "value" => "UNKNOWN"} [2026-07-15 12:49:42.997] [DEBUG] QUERY OK db=29.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "UNKNOWN", "sim_imsi2", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:42.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407217, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:42.998] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "14"} [2026-07-15 12:49:43.032] [DEBUG] QUERY OK db=33.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "14", "data_usage_mb", 47260, ~N[2026-07-15 12:49:42], ~N[2026-07-15 12:49:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:43.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407218, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:42], updated_at: ~N[2026-07-15 12:49:42]}} [2026-07-15 12:49:43.033] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T03:59:32Z", "value" => "0"} [2026-07-15 12:49:43.073] [DEBUG] QUERY OK db=40.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59:32Z", "0", "mobile_data_mb", 47260, ~N[2026-07-15 12:49:43], ~N[2026-07-15 12:49:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:43.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407219, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:43], updated_at: ~N[2026-07-15 12:49:43]}} [2026-07-15 12:49:43.074] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:49:43.114] [DEBUG] QUERY OK db=38.8ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T03:59: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47260, ~N[2026-07-15 12:49:43], ~N[2026-07-15 12:49:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:49:43.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407220, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T03:59:32Z", message: nil, status_log_id: 47260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:49:43], updated_at: ~N[2026-07-15 12:49:43]}} [2026-07-15 12:49:43.116] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=41.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-15 12:49:43.120] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:49:43.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:49:43.127] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.3ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:50:12.645] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:50:12.645] [INFO ] Incoming JSON payload: {"oid":"073e324b-a413-40ba-a9f0-2c9088b489e5","sn":"98250623730001","uploadTime":"2026-07-15T04:00:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:00:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:50:12.646] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "073e324b-a413-40ba-a9f0-2c9088b489e5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:00:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:00:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:00:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:00:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:00:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:00:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:00:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:00:02Z", "vendor" => "morefun"} [2026-07-15 12:50:12.646] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:50:12.646] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:50:12.646] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:50:12.647] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=971.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-15 12:50:12.648] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=213.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-15 12:50:12.648] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:50:12.649] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:50:12.649] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:50:12.675] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:50:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:50:12.675] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:50:12.677] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=26.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:50:12.715] [DEBUG] QUERY OK source="tms_terminals" db=37.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:50:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:50:12.747] [DEBUG] QUERY OK db=31.9ms idle=38.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "073e324b-a413-40ba-a9f0-2c9088b489e5", "2026-07-15T04:00:02Z", ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:50:12.748] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47261, oid: "073e324b-a413-40ba-a9f0-2c9088b489e5", upload_time: "2026-07-15T04:00:02Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]} [2026-07-15 12:50:12.748] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:00:02Z", "value" => "morefun"} [2026-07-15 12:50:12.781] [DEBUG] QUERY OK db=32.7ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "morefun", "vendor", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407221, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.781] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:00:02Z", "value" => "kiosk_launcher"} [2026-07-15 12:50:12.816] [DEBUG] QUERY OK db=34.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "kiosk_launcher", "model", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407222, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.817] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:00:02Z", "value" => "1.0"} [2026-07-15 12:50:12.846] [DEBUG] QUERY OK db=28.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "1.0", "app_version", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407223, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.846] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:00:02Z", "value" => "13"} [2026-07-15 12:50:12.900] [DEBUG] QUERY OK db=53.6ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "13", "android_version", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407224, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.901] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "933"} [2026-07-15 12:50:12.930] [DEBUG] QUERY OK db=28.3ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "933", "ram_free_mb", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407225, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.930] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:00:02Z", "value" => "WIFI"} [2026-07-15 12:50:12.974] [DEBUG] QUERY OK db=42.9ms queue=0.1ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "WIFI", "network_type", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:12.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407226, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:12.974] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:00:02Z", "value" => "true"} [2026-07-15 12:50:13.010] [DEBUG] QUERY OK db=34.7ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "true", "kiosk_active", 47261, ~N[2026-07-15 12:50:12], ~N[2026-07-15 12:50:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407227, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:12], updated_at: ~N[2026-07-15 12:50:12]}} [2026-07-15 12:50:13.010] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:00:02Z", "value" => ""} [2026-07-15 12:50:13.032] [DEBUG] QUERY OK db=21.0ms queue=0.1ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:00:02Z", "sim_operator", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407228, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.032] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"} [2026-07-15 12:50:13.084] [DEBUG] QUERY OK db=51.3ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "UNKNOWN", "sim_number", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407229, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.085] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"} [2026-07-15 12:50:13.114] [DEBUG] QUERY OK db=28.3ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "UNKNOWN", "sim_iccid", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407230, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.114] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"} [2026-07-15 12:50:13.161] [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-15T04:00:02Z", "UNKNOWN", "sim_imsi", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407231, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.164] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"} [2026-07-15 12:50:13.193] [DEBUG] QUERY OK db=28.5ms queue=0.6ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "UNKNOWN", "sim_iccid2", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407232, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.194] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:00:02Z", "value" => "UNKNOWN"} [2026-07-15 12:50:13.239] [DEBUG] QUERY OK db=43.4ms queue=0.2ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "UNKNOWN", "sim_imsi2", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407233, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.239] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "14"} [2026-07-15 12:50:13.284] [DEBUG] QUERY OK db=44.3ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "14", "data_usage_mb", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407234, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.284] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:00:02Z", "value" => "0"} [2026-07-15 12:50:13.313] [DEBUG] QUERY OK db=28.9ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:02Z", "0", "mobile_data_mb", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407235, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.314] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:50:13.351] [DEBUG] QUERY OK db=34.4ms 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-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47261, ~N[2026-07-15 12:50:13], ~N[2026-07-15 12:50:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:13.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407236, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:00:02Z", message: nil, status_log_id: 47261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:13], updated_at: ~N[2026-07-15 12:50:13]}} [2026-07-15 12:50:13.353] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=39.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:50:13.358] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:50:13.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:50:13.364] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:50:43.056] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:50:43.056] [INFO ] Incoming JSON payload: {"oid":"46b36420-96be-41a3-9a11-ae02cf839174","sn":"98250623730001","uploadTime":"2026-07-15T04:00:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:00:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:50:43.058] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "46b36420-96be-41a3-9a11-ae02cf839174", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:00:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:00:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:00:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:00:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:00:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:00:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:00:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:00:32Z", "vendor" => "morefun"} [2026-07-15 12:50:43.058] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:50:43.058] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:50:43.058] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:50:43.059] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1382.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-15 12:50:43.060] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=548.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-15 12:50:43.060] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:50:43.061] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:50:43.063] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:50:43.096] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:50:43], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:50:43.096] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:50:43.097] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=35.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:50:43.146] [DEBUG] QUERY OK source="tms_terminals" db=48.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:50:43], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:50:43.161] [DEBUG] QUERY OK db=14.2ms idle=49.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "46b36420-96be-41a3-9a11-ae02cf839174", "2026-07-15T04:00:32Z", ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:50:43.161] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47262, oid: "46b36420-96be-41a3-9a11-ae02cf839174", upload_time: "2026-07-15T04:00:32Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]} [2026-07-15 12:50:43.161] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:00:32Z", "value" => "morefun"} [2026-07-15 12:50:43.192] [DEBUG] QUERY OK db=30.8ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "morefun", "vendor", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407237, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.193] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:00:32Z", "value" => "kiosk_launcher"} [2026-07-15 12:50:43.238] [DEBUG] QUERY OK db=44.8ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "kiosk_launcher", "model", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407238, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.238] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:00:32Z", "value" => "1.0"} [2026-07-15 12:50:43.298] [DEBUG] QUERY OK db=59.6ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "1.0", "app_version", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407239, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.299] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:00:32Z", "value" => "13"} [2026-07-15 12:50:43.328] [DEBUG] QUERY OK db=29.3ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "13", "android_version", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407240, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.329] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "933"} [2026-07-15 12:50:43.367] [DEBUG] QUERY OK db=37.9ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "933", "ram_free_mb", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407241, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.367] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:00:32Z", "value" => "WIFI"} [2026-07-15 12:50:43.391] [DEBUG] QUERY OK db=22.7ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "WIFI", "network_type", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407242, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.391] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:00:32Z", "value" => "true"} [2026-07-15 12:50:43.441] [DEBUG] QUERY OK db=49.1ms idle=1.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "true", "kiosk_active", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407243, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.442] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:00:32Z", "value" => ""} [2026-07-15 12:50:43.483] [DEBUG] QUERY OK db=40.1ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:00:32Z", "sim_operator", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407244, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.484] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"} [2026-07-15 12:50:43.518] [DEBUG] QUERY OK db=33.0ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "UNKNOWN", "sim_number", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407245, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.518] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"} [2026-07-15 12:50:43.545] [DEBUG] QUERY OK db=26.7ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "UNKNOWN", "sim_iccid", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407246, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.546] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"} [2026-07-15 12:50:43.570] [DEBUG] QUERY OK db=23.8ms queue=0.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "UNKNOWN", "sim_imsi", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407247, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.571] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"} [2026-07-15 12:50:43.610] [DEBUG] QUERY OK db=39.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "UNKNOWN", "sim_iccid2", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407248, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.610] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:00:32Z", "value" => "UNKNOWN"} [2026-07-15 12:50:43.634] [DEBUG] QUERY OK db=23.3ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "UNKNOWN", "sim_imsi2", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407249, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.634] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "14"} [2026-07-15 12:50:43.667] [DEBUG] QUERY OK db=32.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "14", "data_usage_mb", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407250, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.668] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:00:32Z", "value" => "0"} [2026-07-15 12:50:43.727] [DEBUG] QUERY OK db=58.9ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00:32Z", "0", "mobile_data_mb", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407251, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.728] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:50:43.770] [DEBUG] QUERY OK db=40.9ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:00: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47262, ~N[2026-07-15 12:50:43], ~N[2026-07-15 12:50:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:50:43.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407252, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:00:32Z", message: nil, status_log_id: 47262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:50:43], updated_at: ~N[2026-07-15 12:50:43]}} [2026-07-15 12:50:43.774] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=44.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-15 12:50:43.779] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:50:43.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=0.2ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:50:43.786] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.7ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:51:14.083] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:51:14.083] [INFO ] Incoming JSON payload: {"oid":"28306053-9854-4c75-91f2-aa5de79db6a5","sn":"98250623730001","uploadTime":"2026-07-15T04:01:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:01:03Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:51:14.085] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "28306053-9854-4c75-91f2-aa5de79db6a5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:01:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:01:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:01:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:01:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:01:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:01:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:01:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:01:03Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:01:03Z", "vendor" => "morefun"} [2026-07-15 12:51:14.085] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:51:14.085] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:51:14.085] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:51:14.087] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1407.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-15 12:51:14.088] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=442.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-15 12:51:14.088] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:51:14.089] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:51:14.090] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:51:14.114] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:51:14], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:51:14.115] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:51:14.116] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=25.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:51:14.141] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:51:14], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:51:14.181] [DEBUG] QUERY OK db=39.3ms idle=24.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "28306053-9854-4c75-91f2-aa5de79db6a5", "2026-07-15T04:01:03Z", ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:51:14.181] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47263, oid: "28306053-9854-4c75-91f2-aa5de79db6a5", upload_time: "2026-07-15T04:01:03Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]} [2026-07-15 12:51:14.181] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:01:03Z", "value" => "morefun"} [2026-07-15 12:51:14.206] [DEBUG] QUERY OK db=23.8ms queue=0.1ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "morefun", "vendor", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407253, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.206] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:01:03Z", "value" => "kiosk_launcher"} [2026-07-15 12:51:14.230] [DEBUG] QUERY OK db=23.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "kiosk_launcher", "model", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407254, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.230] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:01:03Z", "value" => "1.0"} [2026-07-15 12:51:14.273] [DEBUG] QUERY OK db=42.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "1.0", "app_version", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407255, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.274] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:01:03Z", "value" => "13"} [2026-07-15 12:51:14.299] [DEBUG] QUERY OK db=24.9ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "13", "android_version", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407256, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.299] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "930"} [2026-07-15 12:51:14.332] [DEBUG] QUERY OK db=32.4ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "930", "ram_free_mb", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407257, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.333] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:01:03Z", "value" => "WIFI"} [2026-07-15 12:51:14.381] [DEBUG] QUERY OK db=47.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "WIFI", "network_type", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407258, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.381] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:01:03Z", "value" => "true"} [2026-07-15 12:51:14.408] [DEBUG] QUERY OK db=26.1ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "true", "kiosk_active", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407259, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.409] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:01:03Z", "value" => ""} [2026-07-15 12:51:14.425] [DEBUG] QUERY OK db=15.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:01:03Z", "sim_operator", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407260, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.425] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"} [2026-07-15 12:51:14.464] [DEBUG] QUERY OK db=38.0ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "UNKNOWN", "sim_number", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407261, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.464] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"} [2026-07-15 12:51:14.488] [DEBUG] QUERY OK db=24.0ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "UNKNOWN", "sim_iccid", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407262, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.489] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"} [2026-07-15 12:51:14.513] [DEBUG] QUERY OK db=23.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "UNKNOWN", "sim_imsi", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407263, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.513] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"} [2026-07-15 12:51:14.556] [DEBUG] QUERY OK db=42.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "UNKNOWN", "sim_iccid2", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407264, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.558] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:01:03Z", "value" => "UNKNOWN"} [2026-07-15 12:51:14.583] [DEBUG] QUERY OK db=25.3ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "UNKNOWN", "sim_imsi2", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407265, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.584] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "14"} [2026-07-15 12:51:14.620] [DEBUG] QUERY OK db=29.8ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "14", "data_usage_mb", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407266, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.620] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:01:03Z", "value" => "0"} [2026-07-15 12:51:14.666] [DEBUG] QUERY OK db=42.3ms queue=0.2ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "0", "mobile_data_mb", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407267, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.668] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:01:03Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:51:14.704] [DEBUG] QUERY OK db=34.2ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:03Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47263, ~N[2026-07-15 12:51:14], ~N[2026-07-15 12:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:51:14.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407268, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:01:03Z", message: nil, status_log_id: 47263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:51:14], updated_at: ~N[2026-07-15 12:51:14]}} [2026-07-15 12:51:14.711] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=43.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-15 12:51:14.721] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:51:14.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms queue=0.2ms idle=18.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:51:14.732] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.4ms queue=1.0ms idle=19.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:52:01.805] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:52:01.805] [INFO ] Incoming JSON payload: {"oid":"3f4eac78-8f09-431c-b684-9ed883477d13","sn":"98250623730001","uploadTime":"2026-07-15T04:01:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:01:51Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:52:01.810] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f4eac78-8f09-431c-b684-9ed883477d13", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:01:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:01:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:01:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:01:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:01:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:01:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:01:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:01:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:01:51Z", "vendor" => "morefun"} [2026-07-15 12:52:01.811] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:52:01.811] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:52:01.811] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:52:01.818] [DEBUG] QUERY OK source="parameter_templates" db=7.1ms idle=124.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-15 12:52:01.824] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms queue=2.7ms idle=42.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-15 12:52:01.824] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:52:01.825] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:52:01.825] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:52:01.874] [DEBUG] QUERY OK source="tms_terminals" db=42.1ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:52:01], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:52:01.874] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:52:01.876] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=49.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:52:01.925] [DEBUG] QUERY OK source="tms_terminals" db=49.1ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:52:01], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:52:01.998] [DEBUG] QUERY OK db=69.0ms idle=53.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "3f4eac78-8f09-431c-b684-9ed883477d13", "2026-07-15T04:01:51Z", ~N[2026-07-15 12:52:01], ~N[2026-07-15 12:52:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:52:01.999] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47264, oid: "3f4eac78-8f09-431c-b684-9ed883477d13", upload_time: "2026-07-15T04:01:51Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:01], updated_at: ~N[2026-07-15 12:52:01]} [2026-07-15 12:52:01.999] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:01:51Z", "value" => "morefun"} [2026-07-15 12:52:02.036] [DEBUG] QUERY OK db=36.9ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "morefun", "vendor", 47264, ~N[2026-07-15 12:52:01], ~N[2026-07-15 12:52:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407269, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:01], updated_at: ~N[2026-07-15 12:52:01]}} [2026-07-15 12:52:02.037] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:01:51Z", "value" => "kiosk_launcher"} [2026-07-15 12:52:02.117] [DEBUG] QUERY OK db=77.6ms queue=2.0ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "kiosk_launcher", "model", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407270, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.118] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:01:51Z", "value" => "1.0"} [2026-07-15 12:52:02.179] [DEBUG] QUERY OK db=61.2ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "1.0", "app_version", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407271, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.180] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:01:51Z", "value" => "13"} [2026-07-15 12:52:02.245] [DEBUG] QUERY OK db=62.8ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "13", "android_version", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407272, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.246] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "933"} [2026-07-15 12:52:02.305] [DEBUG] QUERY OK db=58.7ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "933", "ram_free_mb", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407273, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.305] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:01:51Z", "value" => "WIFI"} [2026-07-15 12:52:02.337] [DEBUG] QUERY OK db=31.3ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "WIFI", "network_type", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407274, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.337] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:01:51Z", "value" => "true"} [2026-07-15 12:52:02.367] [DEBUG] QUERY OK db=29.2ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "true", "kiosk_active", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407275, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.367] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:01:51Z", "value" => ""} [2026-07-15 12:52:02.422] [DEBUG] QUERY OK db=54.0ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:01:51Z", "sim_operator", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407276, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.422] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"} [2026-07-15 12:52:02.468] [DEBUG] QUERY OK db=45.6ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "UNKNOWN", "sim_number", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407277, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.469] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"} [2026-07-15 12:52:02.533] [DEBUG] QUERY OK db=64.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "UNKNOWN", "sim_iccid", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407278, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"} [2026-07-15 12:52:02.571] [DEBUG] QUERY OK db=37.1ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "UNKNOWN", "sim_imsi", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407279, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.572] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"} [2026-07-15 12:52:02.640] [DEBUG] QUERY OK db=67.6ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "UNKNOWN", "sim_iccid2", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407280, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.640] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:01:51Z", "value" => "UNKNOWN"} [2026-07-15 12:52:02.707] [DEBUG] QUERY OK db=65.8ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "UNKNOWN", "sim_imsi2", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407281, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.708] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "14"} [2026-07-15 12:52:02.753] [DEBUG] QUERY OK db=44.1ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "14", "data_usage_mb", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407282, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.753] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:01:51Z", "value" => "0"} [2026-07-15 12:52:02.807] [DEBUG] QUERY OK db=53.7ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "0", "mobile_data_mb", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407283, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.809] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:01:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:52:02.885] [DEBUG] QUERY OK db=73.6ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:01:51Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47264, ~N[2026-07-15 12:52:02], ~N[2026-07-15 12:52:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:02.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407284, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:01:51Z", message: nil, status_log_id: 47264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:02], updated_at: ~N[2026-07-15 12:52:02]}} [2026-07-15 12:52:02.906] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=96.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-15 12:52:02.943] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:47:03]}, %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-15 12:52:02.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.9ms idle=61.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:52:02.958] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.5ms queue=0.4ms idle=49.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47166, 47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:52:15.530] [INFO ] Received status update for terminal 61250424798001 [2026-07-15 12:52:15.530] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-07-15T16:52:12Z","org.device":[{"itemkey":"battery","value":29,"timestamp":"2026-07-15T16:52:12Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-07-15T16:52:12Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-07-15T16:52:12Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-07-15T16:52:12Z","message":""}]} [2026-07-15 12:52:15.531] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => 29}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:52:12Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-07-15T16:52:12Z"} [2026-07-15 12:52:15.531] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:52:15.532] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=851.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:52:15.532] [INFO ] Terminal updated: 61250424798001 [2026-07-15 12:52:15.572] [DEBUG] QUERY OK source="tms_terminals" db=39.4ms idle=710.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:52:15], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:52:15.573] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=40.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:52:15.597] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:52:15], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:52:15.650] [DEBUG] QUERY OK db=51.0ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-07-15T16:52:12Z", ~N[2026-07-15 12:52:15], ~N[2026-07-15 12:52:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:52:15.650] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47265, oid: "org-id-placeholder", upload_time: "2026-07-15T16:52:12Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:15], updated_at: ~N[2026-07-15 12:52:15]} [2026-07-15 12:52:15.650] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => 29} [2026-07-15 12:52:15.714] [DEBUG] QUERY OK db=62.7ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:52:12Z", "29", "battery", 47265, ~N[2026-07-15 12:52:15], ~N[2026-07-15 12:52:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:15.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407285, itemkey: "battery", value: "29", timestamp: "2026-07-15T16:52:12Z", message: nil, status_log_id: 47265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:15], updated_at: ~N[2026-07-15 12:52:15]}} [2026-07-15 12:52:15.714] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-07-15T16:52:12Z", "value" => 50} [2026-07-15 12:52:15.739] [DEBUG] QUERY OK db=24.2ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-07-15T16:52:12Z", "50", "memory", 47265, ~N[2026-07-15 12:52:15], ~N[2026-07-15 12:52:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:15.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407286, itemkey: "memory", value: "50", timestamp: "2026-07-15T16:52:12Z", message: "Normal", status_log_id: 47265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:15], updated_at: ~N[2026-07-15 12:52:15]}} [2026-07-15 12:52:15.741] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => 50} [2026-07-15 12:52:15.771] [DEBUG] QUERY OK db=30.0ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:52:12Z", "50", "cpu", 47265, ~N[2026-07-15 12:52:15], ~N[2026-07-15 12:52:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:15.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407287, itemkey: "cpu", value: "50", timestamp: "2026-07-15T16:52:12Z", message: nil, status_log_id: 47265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:15], updated_at: ~N[2026-07-15 12:52:15]}} [2026-07-15 12:52:15.772] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-07-15T16:52:12Z", "value" => "online"} [2026-07-15 12:52:15.825] [DEBUG] QUERY OK db=51.4ms queue=0.1ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T16:52:12Z", "online", "network", 47265, ~N[2026-07-15 12:52:15], ~N[2026-07-15 12:52:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:52:15.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407288, itemkey: "network", value: "online", timestamp: "2026-07-15T16:52:12Z", message: nil, status_log_id: 47265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:52:15], updated_at: ~N[2026-07-15 12:52:15]}} [2026-07-15 12:52:15.825] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-07-15 12:52:15.826] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 42 terminals [2026-07-15 12:52:15.831] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.3ms idle=5.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:52:15.841] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:52:15.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:52:15.849] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=16.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:52:19.739] [INFO ] GET / [2026-07-15 12:52:19.739] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-07-15 12:52:19.741] [DEBUG] QUERY OK source="users_tokens" db=1.1ms queue=0.1ms idle=1921.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)) [<<107, 138, 213, 151, 158, 177, 70, 165, 237, 118, 201, 26, 163, 10, 196, 144, 14, 160, 52, 85, 150, 228, 121, 108, 204, 42, 29, 208, 159, 170, 198, 95>>, "session", ~U[2026-07-15 12:52:19.739644Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-07-15 12:52:19.741] [INFO ] Sent 200 in 2ms [2026-07-15 12:53:53.073] [INFO ] Running offline device check... [2026-07-15 12:53:53.073] [INFO ] Starting offline device check... [2026-07-15 12:53:53.075] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1386.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-15 12:53:53.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.087] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.088] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.089] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.133] [DEBUG] QUERY OK source="tms_terminals" db=25.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:53:53], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:53:53.134] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:53:53.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=26.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:53:53.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=12.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:53:53.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.200] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms idle=12.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:53:53], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:53:53.200] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:53:53.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=35.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.211] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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-15 12:53:53.212] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.218] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.223] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:53:53.224] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:53:53.225] [INFO ] Offline device check completed successfully [2026-07-15 12:54:28.654] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:54:28.655] [INFO ] Incoming JSON payload: {"oid":"e32a396f-270d-4cef-b5ca-107a446b7459","sn":"98250623730001","uploadTime":"2026-07-15T04:04:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:04:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:54:28.655] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e32a396f-270d-4cef-b5ca-107a446b7459", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:04:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:04:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:04:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:04:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:04:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:04:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:04:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:04:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:04:18Z", "vendor" => "morefun"} [2026-07-15 12:54:28.656] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:54:28.656] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:54:28.656] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:54:28.657] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=964.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-15 12:54:28.658] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=481.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-15 12:54:28.658] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:54:28.659] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:54:28.659] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:54:28.673] [DEBUG] QUERY OK source="tms_terminals" db=13.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:54:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:54:28.673] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:54:28.674] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:54:28.720] [DEBUG] QUERY OK source="tms_terminals" db=46.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:54:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:54:28.751] [DEBUG] QUERY OK db=30.4ms idle=47.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e32a396f-270d-4cef-b5ca-107a446b7459", "2026-07-15T04:04:18Z", ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:54:28.751] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47266, oid: "e32a396f-270d-4cef-b5ca-107a446b7459", upload_time: "2026-07-15T04:04:18Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]} [2026-07-15 12:54:28.752] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:04:18Z", "value" => "morefun"} [2026-07-15 12:54:28.780] [DEBUG] QUERY OK db=28.5ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "morefun", "vendor", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407289, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.781] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:04:18Z", "value" => "kiosk_launcher"} [2026-07-15 12:54:28.803] [DEBUG] QUERY OK db=21.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "kiosk_launcher", "model", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407290, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.805] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:04:18Z", "value" => "1.0"} [2026-07-15 12:54:28.829] [DEBUG] QUERY OK db=23.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "1.0", "app_version", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407291, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.830] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:04:18Z", "value" => "13"} [2026-07-15 12:54:28.870] [DEBUG] QUERY OK db=39.6ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "13", "android_version", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407292, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.870] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "929"} [2026-07-15 12:54:28.898] [DEBUG] QUERY OK db=27.5ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "929", "ram_free_mb", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407293, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.899] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:04:18Z", "value" => "WIFI"} [2026-07-15 12:54:28.930] [DEBUG] QUERY OK db=30.9ms queue=0.2ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "WIFI", "network_type", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407294, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.930] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:04:18Z", "value" => "true"} [2026-07-15 12:54:28.945] [DEBUG] QUERY OK db=13.8ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "true", "kiosk_active", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407295, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.945] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:04:18Z", "value" => ""} [2026-07-15 12:54:28.974] [DEBUG] QUERY OK db=28.3ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:04:18Z", "sim_operator", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:28.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407296, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:28.974] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"} [2026-07-15 12:54:29.024] [DEBUG] QUERY OK db=48.5ms queue=0.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "UNKNOWN", "sim_number", 47266, ~N[2026-07-15 12:54:28], ~N[2026-07-15 12:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407297, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:28], updated_at: ~N[2026-07-15 12:54:28]}} [2026-07-15 12:54:29.024] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"} [2026-07-15 12:54:29.050] [DEBUG] QUERY OK db=25.3ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "UNKNOWN", "sim_iccid", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407298, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.051] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"} [2026-07-15 12:54:29.075] [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-15T04:04:18Z", "UNKNOWN", "sim_imsi", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407299, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.076] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"} [2026-07-15 12:54:29.118] [DEBUG] QUERY OK db=41.3ms queue=0.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "UNKNOWN", "sim_iccid2", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407300, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.118] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:04:18Z", "value" => "UNKNOWN"} [2026-07-15 12:54:29.166] [DEBUG] QUERY OK db=47.0ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "UNKNOWN", "sim_imsi2", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407301, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.166] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "14"} [2026-07-15 12:54:29.191] [DEBUG] QUERY OK db=24.0ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "14", "data_usage_mb", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407302, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.192] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:04:18Z", "value" => "0"} [2026-07-15 12:54:29.220] [DEBUG] QUERY OK db=27.8ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "0", "mobile_data_mb", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407303, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.221] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:04:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:54:29.263] [DEBUG] QUERY OK db=39.9ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47266, ~N[2026-07-15 12:54:29], ~N[2026-07-15 12:54:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:29.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407304, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:04:18Z", message: nil, status_log_id: 47266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:29], updated_at: ~N[2026-07-15 12:54:29]}} [2026-07-15 12:54:29.265] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=43.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:54:29.272] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:54:29.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=10.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:54:29.278] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.5ms idle=11.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:54:58.856] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:54:58.857] [INFO ] Incoming JSON payload: {"oid":"7545580e-6f8f-4def-aeda-048d683b6730","sn":"98250623730001","uploadTime":"2026-07-15T04:04:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:04:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:54:58.859] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7545580e-6f8f-4def-aeda-048d683b6730", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:04:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:04:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:04:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:04:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:04:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:04:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:04:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:04:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:04:48Z", "vendor" => "morefun"} [2026-07-15 12:54:58.859] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:54:58.862] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:54:58.862] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:54:58.864] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1170.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-15 12:54:58.865] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=611.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-15 12:54:58.865] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:54:58.866] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:54:58.866] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:54:58.891] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:54:58], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:54:58.891] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:54:58.892] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:54:58.944] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:54:58], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:54:58.985] [DEBUG] QUERY OK db=39.8ms idle=52.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "7545580e-6f8f-4def-aeda-048d683b6730", "2026-07-15T04:04:48Z", ~N[2026-07-15 12:54:58], ~N[2026-07-15 12:54:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:54:58.985] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47267, oid: "7545580e-6f8f-4def-aeda-048d683b6730", upload_time: "2026-07-15T04:04:48Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:58], updated_at: ~N[2026-07-15 12:54:58]} [2026-07-15 12:54:58.985] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:04:48Z", "value" => "morefun"} [2026-07-15 12:54:59.026] [DEBUG] QUERY OK db=38.8ms queue=1.4ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "morefun", "vendor", 47267, ~N[2026-07-15 12:54:58], ~N[2026-07-15 12:54:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407305, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:58], updated_at: ~N[2026-07-15 12:54:58]}} [2026-07-15 12:54:59.026] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:04:48Z", "value" => "kiosk_launcher"} [2026-07-15 12:54:59.064] [DEBUG] QUERY OK db=36.6ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "kiosk_launcher", "model", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407306, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.065] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:04:48Z", "value" => "1.0"} [2026-07-15 12:54:59.138] [DEBUG] QUERY OK db=71.7ms queue=0.8ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "1.0", "app_version", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407307, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.138] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:04:48Z", "value" => "13"} [2026-07-15 12:54:59.211] [DEBUG] QUERY OK db=72.3ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "13", "android_version", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407308, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.211] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "929"} [2026-07-15 12:54:59.276] [DEBUG] QUERY OK db=63.3ms queue=0.1ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "929", "ram_free_mb", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407309, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.276] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:04:48Z", "value" => "WIFI"} [2026-07-15 12:54:59.361] [DEBUG] QUERY OK db=84.8ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "WIFI", "network_type", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407310, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.362] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:04:48Z", "value" => "true"} [2026-07-15 12:54:59.410] [DEBUG] QUERY OK db=47.8ms queue=0.1ms idle=86.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "true", "kiosk_active", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407311, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.410] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:04:48Z", "value" => ""} [2026-07-15 12:54:59.462] [DEBUG] QUERY OK db=51.0ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:04:48Z", "sim_operator", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407312, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.463] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"} [2026-07-15 12:54:59.494] [DEBUG] QUERY OK db=30.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "UNKNOWN", "sim_number", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407313, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.494] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"} [2026-07-15 12:54:59.533] [DEBUG] QUERY OK db=38.5ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "UNKNOWN", "sim_iccid", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407314, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"} [2026-07-15 12:54:59.585] [DEBUG] QUERY OK db=50.9ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "UNKNOWN", "sim_imsi", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407315, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.586] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"} [2026-07-15 12:54:59.624] [DEBUG] QUERY OK db=38.0ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "UNKNOWN", "sim_iccid2", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407316, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.624] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:04:48Z", "value" => "UNKNOWN"} [2026-07-15 12:54:59.667] [DEBUG] QUERY OK db=42.4ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "UNKNOWN", "sim_imsi2", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407317, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.668] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "14"} [2026-07-15 12:54:59.718] [DEBUG] QUERY OK db=49.5ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "14", "data_usage_mb", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407318, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.718] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:04:48Z", "value" => "0"} [2026-07-15 12:54:59.837] [DEBUG] QUERY OK db=118.3ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "0", "mobile_data_mb", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407319, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.838] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:04:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:54:59.910] [DEBUG] QUERY OK db=71.3ms idle=120.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:04:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47267, ~N[2026-07-15 12:54:59], ~N[2026-07-15 12:54:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:54:59.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407320, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:04:48Z", message: nil, status_log_id: 47267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:54:59], updated_at: ~N[2026-07-15 12:54:59]}} [2026-07-15 12:54:59.913] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=75.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-15 12:54:59.918] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:54:59.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:54:59.927] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.5ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:55:28.958] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:55:28.958] [INFO ] Incoming JSON payload: {"oid":"4c8492e3-95e8-46e5-9363-87b0cdd14187","sn":"98250623730001","uploadTime":"2026-07-15T04:05:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"data_usage_mb","value":"14","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:05:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:55:28.959] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4c8492e3-95e8-46e5-9363-87b0cdd14187", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:05:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:05:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:05:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:05:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:05:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:05:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:05:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "14"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:05:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:05:18Z", "vendor" => "morefun"} [2026-07-15 12:55:28.960] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:55:28.960] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:55:28.960] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:55:28.961] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1268.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-15 12:55:28.962] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=618.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-15 12:55:28.962] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:55:28.963] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:55:28.963] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:55:28.989] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:55:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:55:28.989] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:55:28.990] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:55:29.060] [DEBUG] QUERY OK source="tms_terminals" db=68.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:55:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:55:29.097] [DEBUG] QUERY OK db=37.2ms queue=0.2ms idle=69.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "4c8492e3-95e8-46e5-9363-87b0cdd14187", "2026-07-15T04:05:18Z", ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:55:29.098] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47268, oid: "4c8492e3-95e8-46e5-9363-87b0cdd14187", upload_time: "2026-07-15T04:05:18Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]} [2026-07-15 12:55:29.098] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:05:18Z", "value" => "morefun"} [2026-07-15 12:55:29.131] [DEBUG] QUERY OK db=32.2ms queue=0.2ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "morefun", "vendor", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407321, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.132] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:05:18Z", "value" => "kiosk_launcher"} [2026-07-15 12:55:29.163] [DEBUG] QUERY OK db=30.6ms queue=0.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "kiosk_launcher", "model", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407322, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.164] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:05:18Z", "value" => "1.0"} [2026-07-15 12:55:29.187] [DEBUG] QUERY OK db=23.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "1.0", "app_version", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407323, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.188] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:05:18Z", "value" => "13"} [2026-07-15 12:55:29.233] [DEBUG] QUERY OK db=44.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "13", "android_version", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407324, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.234] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "933"} [2026-07-15 12:55:29.267] [DEBUG] QUERY OK db=33.3ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "933", "ram_free_mb", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407325, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.268] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:05:18Z", "value" => "WIFI"} [2026-07-15 12:55:29.288] [DEBUG] QUERY OK db=19.6ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "WIFI", "network_type", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407326, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.289] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:05:18Z", "value" => "true"} [2026-07-15 12:55:29.334] [DEBUG] QUERY OK db=44.6ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "true", "kiosk_active", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407327, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.334] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:05:18Z", "value" => ""} [2026-07-15 12:55:29.367] [DEBUG] QUERY OK db=32.5ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:05:18Z", "sim_operator", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407328, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.367] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"} [2026-07-15 12:55:29.399] [DEBUG] QUERY OK db=31.4ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "UNKNOWN", "sim_number", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407329, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.400] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"} [2026-07-15 12:55:29.425] [DEBUG] QUERY OK db=23.9ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "UNKNOWN", "sim_iccid", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407330, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"} [2026-07-15 12:55:29.473] [DEBUG] QUERY OK db=47.9ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "UNKNOWN", "sim_imsi", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407331, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.474] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"} [2026-07-15 12:55:29.524] [DEBUG] QUERY OK db=49.9ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "UNKNOWN", "sim_iccid2", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407332, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.524] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:05:18Z", "value" => "UNKNOWN"} [2026-07-15 12:55:29.583] [DEBUG] QUERY OK db=57.8ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "UNKNOWN", "sim_imsi2", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407333, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.583] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "14"} [2026-07-15 12:55:29.604] [DEBUG] QUERY OK db=20.7ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "14", "data_usage_mb", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407334, itemkey: "data_usage_mb", value: "14", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.605] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:05:18Z", "value" => "0"} [2026-07-15 12:55:29.638] [DEBUG] QUERY OK db=31.4ms queue=1.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "0", "mobile_data_mb", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407335, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.639] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:05:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:55:29.681] [DEBUG] QUERY OK db=41.3ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:05:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47268, ~N[2026-07-15 12:55:29], ~N[2026-07-15 12:55:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:55:29.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407336, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:05:18Z", message: nil, status_log_id: 47268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:55:29], updated_at: ~N[2026-07-15 12:55:29]}} [2026-07-15 12:55:29.684] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=44.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:55:29.688] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:55:29.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:55:29.695] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.7ms idle=9.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:58:22.013] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:58:22.013] [INFO ] Incoming JSON payload: {"oid":"a1cc91e0-f359-436b-8730-96cda23b3517","sn":"98250623730001","uploadTime":"2026-07-15T04:08:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:08:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:58:22.017] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a1cc91e0-f359-436b-8730-96cda23b3517", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:08:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:08:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:08:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:08:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:08:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:08:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:08:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:08:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:08:11Z", "vendor" => "morefun"} [2026-07-15 12:58:22.017] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:58:22.017] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:58:22.018] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:58:22.019] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1077.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-15 12:58:22.019] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=118.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-15 12:58:22.021] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:58:22.022] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:58:22.023] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:58:22.071] [DEBUG] QUERY OK source="tms_terminals" db=47.9ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:58:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:58:22.071] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:58:22.072] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=49.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:58:22.109] [DEBUG] QUERY OK source="tms_terminals" db=36.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:58:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:58:22.138] [DEBUG] QUERY OK db=28.1ms queue=0.1ms idle=37.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "a1cc91e0-f359-436b-8730-96cda23b3517", "2026-07-15T04:08:11Z", ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:58:22.138] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47269, oid: "a1cc91e0-f359-436b-8730-96cda23b3517", upload_time: "2026-07-15T04:08:11Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]} [2026-07-15 12:58:22.138] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:08:11Z", "value" => "morefun"} [2026-07-15 12:58:22.181] [DEBUG] QUERY OK db=42.3ms queue=0.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "morefun", "vendor", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407337, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.182] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:08:11Z", "value" => "kiosk_launcher"} [2026-07-15 12:58:22.206] [DEBUG] QUERY OK db=23.4ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "kiosk_launcher", "model", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407338, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.206] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:08:11Z", "value" => "1.0"} [2026-07-15 12:58:22.249] [DEBUG] QUERY OK db=42.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "1.0", "app_version", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407339, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.250] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:08:11Z", "value" => "13"} [2026-07-15 12:58:22.264] [DEBUG] QUERY OK db=14.0ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "13", "android_version", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407340, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.264] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "936"} [2026-07-15 12:58:22.309] [DEBUG] QUERY OK db=44.1ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "936", "ram_free_mb", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407341, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.309] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:08:11Z", "value" => "WIFI"} [2026-07-15 12:58:22.348] [DEBUG] QUERY OK db=38.5ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "WIFI", "network_type", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407342, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.349] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:08:11Z", "value" => "true"} [2026-07-15 12:58:22.374] [DEBUG] QUERY OK db=24.8ms queue=0.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "true", "kiosk_active", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407343, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.375] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:08:11Z", "value" => ""} [2026-07-15 12:58:22.414] [DEBUG] QUERY OK db=39.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:08:11Z", "sim_operator", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407344, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.415] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"} [2026-07-15 12:58:22.446] [DEBUG] QUERY OK db=31.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "UNKNOWN", "sim_number", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407345, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.447] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"} [2026-07-15 12:58:22.495] [DEBUG] QUERY OK db=47.5ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "UNKNOWN", "sim_iccid", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407346, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.495] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"} [2026-07-15 12:58:22.544] [DEBUG] QUERY OK db=47.9ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "UNKNOWN", "sim_imsi", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407347, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.544] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"} [2026-07-15 12:58:22.567] [DEBUG] QUERY OK db=22.5ms queue=0.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "UNKNOWN", "sim_iccid2", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407348, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.568] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:08:11Z", "value" => "UNKNOWN"} [2026-07-15 12:58:22.603] [DEBUG] QUERY OK db=34.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "UNKNOWN", "sim_imsi2", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407349, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.603] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "15"} [2026-07-15 12:58:22.626] [DEBUG] QUERY OK db=23.1ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "15", "data_usage_mb", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407350, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.627] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:08:11Z", "value" => "0"} [2026-07-15 12:58:22.672] [DEBUG] QUERY OK db=44.0ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "0", "mobile_data_mb", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407351, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.673] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:08:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:58:22.704] [DEBUG] QUERY OK db=29.8ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47269, ~N[2026-07-15 12:58:22], ~N[2026-07-15 12:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:22.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407352, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:08:11Z", message: nil, status_log_id: 47269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:22], updated_at: ~N[2026-07-15 12:58:22]}} [2026-07-15 12:58:22.706] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=33.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-15 12:58:22.710] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:58:22.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:58:22.716] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.3ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:58:50.505] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 12:58:50.506] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1251.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-15 12:58:50.507] [DEBUG] QUERY OK source="filter_usage" db=0.3ms idle=535.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-15 12:58:50.507] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 12:58:52.119] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:58:52.119] [INFO ] Incoming JSON payload: {"oid":"e41d8e68-6f81-4f23-b26c-e06d8fc3bcd5","sn":"98250623730001","uploadTime":"2026-07-15T04:08:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:08:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:58:52.121] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e41d8e68-6f81-4f23-b26c-e06d8fc3bcd5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:08:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:08:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:08:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:08:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:08:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:08:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:08:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:08:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:08:42Z", "vendor" => "morefun"} [2026-07-15 12:58:52.121] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:58:52.121] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:58:52.121] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:58:52.122] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=416.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-15 12:58:52.122] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=146.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-15 12:58:52.122] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:58:52.123] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:58:52.124] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:58:52.161] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:58:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:58:52.161] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:58:52.162] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=37.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:58:52.195] [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-15 12:58:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:58:52.216] [DEBUG] QUERY OK db=20.7ms idle=33.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e41d8e68-6f81-4f23-b26c-e06d8fc3bcd5", "2026-07-15T04:08:42Z", ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:58:52.216] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47270, oid: "e41d8e68-6f81-4f23-b26c-e06d8fc3bcd5", upload_time: "2026-07-15T04:08:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]} [2026-07-15 12:58:52.217] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:08:42Z", "value" => "morefun"} [2026-07-15 12:58:52.253] [DEBUG] QUERY OK db=35.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "morefun", "vendor", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407353, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.253] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:08:42Z", "value" => "kiosk_launcher"} [2026-07-15 12:58:52.291] [DEBUG] QUERY OK db=37.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "kiosk_launcher", "model", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407354, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.292] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:08:42Z", "value" => "1.0"} [2026-07-15 12:58:52.325] [DEBUG] QUERY OK db=33.1ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "1.0", "app_version", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407355, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.326] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:08:42Z", "value" => "13"} [2026-07-15 12:58:52.361] [DEBUG] QUERY OK db=34.9ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "13", "android_version", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407356, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.362] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "932"} [2026-07-15 12:58:52.397] [DEBUG] QUERY OK db=34.5ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "932", "ram_free_mb", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407357, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.398] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:08:42Z", "value" => "WIFI"} [2026-07-15 12:58:52.413] [DEBUG] QUERY OK db=14.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "WIFI", "network_type", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407358, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.413] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:08:42Z", "value" => "true"} [2026-07-15 12:58:52.462] [DEBUG] QUERY OK db=47.6ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "true", "kiosk_active", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407359, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.463] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:08:42Z", "value" => ""} [2026-07-15 12:58:52.531] [DEBUG] QUERY OK db=67.8ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:08:42Z", "sim_operator", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407360, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.532] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"} [2026-07-15 12:58:52.586] [DEBUG] QUERY OK db=53.6ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "UNKNOWN", "sim_number", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407361, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.587] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"} [2026-07-15 12:58:52.610] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "UNKNOWN", "sim_iccid", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407362, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.611] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"} [2026-07-15 12:58:52.633] [DEBUG] QUERY OK db=21.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "UNKNOWN", "sim_imsi", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407363, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.633] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"} [2026-07-15 12:58:52.661] [DEBUG] QUERY OK db=27.7ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "UNKNOWN", "sim_iccid2", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407364, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.662] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:08:42Z", "value" => "UNKNOWN"} [2026-07-15 12:58:52.696] [DEBUG] QUERY OK db=33.4ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "UNKNOWN", "sim_imsi2", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407365, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.697] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "15"} [2026-07-15 12:58:52.720] [DEBUG] QUERY OK db=23.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "15", "data_usage_mb", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407366, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.720] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:08:42Z", "value" => "0"} [2026-07-15 12:58:52.754] [DEBUG] QUERY OK db=33.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "0", "mobile_data_mb", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407367, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.755] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:08:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:58:52.780] [DEBUG] QUERY OK db=24.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:08:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47270, ~N[2026-07-15 12:58:52], ~N[2026-07-15 12:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:58:52.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407368, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:08:42Z", message: nil, status_log_id: 47270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:58:52], updated_at: ~N[2026-07-15 12:58:52]}} [2026-07-15 12:58:52.782] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=27.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:58:52.788] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:58:52.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:58:52.794] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:58:53.226] [INFO ] Running offline device check... [2026-07-15 12:58:53.228] [INFO ] Starting offline device check... [2026-07-15 12:58:53.229] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=433.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 12:58:53.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=251.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:58:53.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.242] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.246] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.248] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.321] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:58:53], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:58:53.321] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 12:58:53.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=50.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:58:53.324] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=13.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:58:53.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.342] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.343] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.409] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms queue=0.2ms idle=15.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:58:53], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 12:58:53.409] [INFO ] Terminal 98251226730001 back online [2026-07-15 12:58:53.410] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=51.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 12:58:53.411] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.420] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.422] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.425] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.426] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.427] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.437] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.441] [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-15 12:58:53.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 12:58:53.442] [INFO ] Offline device check completed. Found 37 offline devices, updated 2 statuses. [2026-07-15 12:58:53.442] [INFO ] Offline device check completed successfully [2026-07-15 12:59:22.124] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:59:22.124] [INFO ] Incoming JSON payload: {"oid":"e090fb08-0cbc-44d6-8f31-dd9193da93c4","sn":"98250623730001","uploadTime":"2026-07-15T04:09:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:09:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:59:22.125] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e090fb08-0cbc-44d6-8f31-dd9193da93c4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:09:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:09:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:09:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:09:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:09:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:09:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:09:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:09:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:09:12Z", "vendor" => "morefun"} [2026-07-15 12:59:22.125] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:59:22.126] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:59:22.126] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:59:22.127] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1043.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-15 12:59:22.128] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=41.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-15 12:59:22.128] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:59:22.130] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:59:22.130] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:59:22.166] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:59:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:59:22.166] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:59:22.167] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:59:22.212] [DEBUG] QUERY OK source="tms_terminals" db=44.7ms queue=0.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:59:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:59:22.255] [DEBUG] QUERY OK db=42.6ms idle=45.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "e090fb08-0cbc-44d6-8f31-dd9193da93c4", "2026-07-15T04:09:12Z", ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:59:22.256] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47271, oid: "e090fb08-0cbc-44d6-8f31-dd9193da93c4", upload_time: "2026-07-15T04:09:12Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]} [2026-07-15 12:59:22.256] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:09:12Z", "value" => "morefun"} [2026-07-15 12:59:22.290] [DEBUG] QUERY OK db=33.0ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "morefun", "vendor", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407369, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.290] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:09:12Z", "value" => "kiosk_launcher"} [2026-07-15 12:59:22.314] [DEBUG] QUERY OK db=22.6ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "kiosk_launcher", "model", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407370, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.314] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:09:12Z", "value" => "1.0"} [2026-07-15 12:59:22.338] [DEBUG] QUERY OK db=23.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "1.0", "app_version", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407371, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.339] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:09:12Z", "value" => "13"} [2026-07-15 12:59:22.361] [DEBUG] QUERY OK db=22.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "13", "android_version", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407372, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.362] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "931"} [2026-07-15 12:59:22.397] [DEBUG] QUERY OK db=33.8ms queue=0.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "931", "ram_free_mb", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407373, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.397] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:09:12Z", "value" => "WIFI"} [2026-07-15 12:59:22.420] [DEBUG] QUERY OK db=22.3ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "WIFI", "network_type", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407374, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.421] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:09:12Z", "value" => "true"} [2026-07-15 12:59:22.444] [DEBUG] QUERY OK db=22.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "true", "kiosk_active", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407375, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.445] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:09:12Z", "value" => ""} [2026-07-15 12:59:22.495] [DEBUG] QUERY OK db=49.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:09:12Z", "sim_operator", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407376, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.496] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"} [2026-07-15 12:59:22.537] [DEBUG] QUERY OK db=40.5ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "UNKNOWN", "sim_number", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407377, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.537] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"} [2026-07-15 12:59:22.587] [DEBUG] QUERY OK db=49.4ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "UNKNOWN", "sim_iccid", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407378, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.588] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"} [2026-07-15 12:59:22.632] [DEBUG] QUERY OK db=43.8ms queue=0.2ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "UNKNOWN", "sim_imsi", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407379, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.633] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"} [2026-07-15 12:59:22.693] [DEBUG] QUERY OK db=60.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "UNKNOWN", "sim_iccid2", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407380, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.697] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:09:12Z", "value" => "UNKNOWN"} [2026-07-15 12:59:22.741] [DEBUG] QUERY OK db=43.6ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "UNKNOWN", "sim_imsi2", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407381, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.742] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "15"} [2026-07-15 12:59:22.776] [DEBUG] QUERY OK db=33.3ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "15", "data_usage_mb", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407382, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.777] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:09:12Z", "value" => "0"} [2026-07-15 12:59:22.817] [DEBUG] QUERY OK db=39.5ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "0", "mobile_data_mb", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407383, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.820] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:09:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:59:22.851] [DEBUG] QUERY OK db=30.2ms queue=0.3ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47271, ~N[2026-07-15 12:59:22], ~N[2026-07-15 12:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:22.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407384, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:09:12Z", message: nil, status_log_id: 47271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:22], updated_at: ~N[2026-07-15 12:59:22]}} [2026-07-15 12:59:22.854] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=35.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:59:22.860] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:59:22.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:59:22.868] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.5ms idle=11.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:59:52.331] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 12:59:52.331] [INFO ] Incoming JSON payload: {"oid":"d87d1895-b41a-4d46-9c13-5add23198abe","sn":"98250623730001","uploadTime":"2026-07-15T04:09:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:09:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 12:59:52.332] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d87d1895-b41a-4d46-9c13-5add23198abe", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:09:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:09:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:09:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:09:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:09:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:09:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:09:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:09:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:09:42Z", "vendor" => "morefun"} [2026-07-15 12:59:52.333] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 12:59:52.333] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 12:59:52.333] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 12:59:52.334] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=617.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-15 12:59:52.336] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=156.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-15 12:59:52.336] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 12:59:52.337] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 12:59:52.337] [INFO ] Terminal updated: 98250623730001 [2026-07-15 12:59:52.361] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 12:59:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 12:59:52.362] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 12:59:52.363] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=24.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 12:59:52.403] [DEBUG] QUERY OK source="tms_terminals" db=40.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 12:59:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 12:59:52.442] [DEBUG] QUERY OK db=37.8ms idle=41.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "d87d1895-b41a-4d46-9c13-5add23198abe", "2026-07-15T04:09:42Z", ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 12:59:52.442] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47272, oid: "d87d1895-b41a-4d46-9c13-5add23198abe", upload_time: "2026-07-15T04:09:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]} [2026-07-15 12:59:52.442] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:09:42Z", "value" => "morefun"} [2026-07-15 12:59:52.454] [DEBUG] QUERY OK db=11.8ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "morefun", "vendor", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407385, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.455] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:09:42Z", "value" => "kiosk_launcher"} [2026-07-15 12:59:52.511] [DEBUG] QUERY OK db=53.8ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "kiosk_launcher", "model", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407386, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.512] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:09:42Z", "value" => "1.0"} [2026-07-15 12:59:52.553] [DEBUG] QUERY OK db=41.0ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "1.0", "app_version", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407387, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.554] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:09:42Z", "value" => "13"} [2026-07-15 12:59:52.580] [DEBUG] QUERY OK db=25.9ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "13", "android_version", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407388, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.580] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "932"} [2026-07-15 12:59:52.609] [DEBUG] QUERY OK db=28.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "932", "ram_free_mb", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407389, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.610] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:09:42Z", "value" => "WIFI"} [2026-07-15 12:59:52.644] [DEBUG] QUERY OK db=34.1ms queue=0.3ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "WIFI", "network_type", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407390, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.645] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:09:42Z", "value" => "true"} [2026-07-15 12:59:52.668] [DEBUG] QUERY OK db=22.6ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "true", "kiosk_active", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407391, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.670] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:09:42Z", "value" => ""} [2026-07-15 12:59:52.711] [DEBUG] QUERY OK db=40.5ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:09:42Z", "sim_operator", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407392, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.712] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"} [2026-07-15 12:59:52.742] [DEBUG] QUERY OK db=29.6ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "UNKNOWN", "sim_number", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407393, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.742] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"} [2026-07-15 12:59:52.774] [DEBUG] QUERY OK db=31.2ms 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-15T04:09:42Z", "UNKNOWN", "sim_iccid", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407394, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.775] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"} [2026-07-15 12:59:52.811] [DEBUG] QUERY OK db=35.1ms queue=0.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "UNKNOWN", "sim_imsi", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407395, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.811] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"} [2026-07-15 12:59:52.835] [DEBUG] QUERY OK db=23.3ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "UNKNOWN", "sim_iccid2", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407396, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.836] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:09:42Z", "value" => "UNKNOWN"} [2026-07-15 12:59:52.865] [DEBUG] QUERY OK db=28.7ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "UNKNOWN", "sim_imsi2", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407397, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.865] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "15"} [2026-07-15 12:59:52.906] [DEBUG] QUERY OK db=40.7ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "15", "data_usage_mb", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407398, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.908] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:09:42Z", "value" => "0"} [2026-07-15 12:59:52.930] [DEBUG] QUERY OK db=22.3ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "0", "mobile_data_mb", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407399, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.933] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:09:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 12:59:52.965] [DEBUG] QUERY OK db=30.5ms queue=0.2ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:09:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47272, ~N[2026-07-15 12:59:52], ~N[2026-07-15 12:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 12:59:52.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407400, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:09:42Z", message: nil, status_log_id: 47272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 12:59:52], updated_at: ~N[2026-07-15 12:59:52]}} [2026-07-15 12:59:52.968] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=35.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 12:59:52.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 12:59:52.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.2ms idle=10.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 12:59:52.981] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:00:22.333] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:00:22.333] [INFO ] Incoming JSON payload: {"oid":"efbcf8db-e7bb-4340-92ea-22af89223f0d","sn":"98250623730001","uploadTime":"2026-07-15T04:10:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:10:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:00:22.335] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "efbcf8db-e7bb-4340-92ea-22af89223f0d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:10:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:10:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:10:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:10:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:10:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:10:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:10:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:10:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:10:12Z", "vendor" => "morefun"} [2026-07-15 13:00:22.335] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:00:22.335] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:00:22.335] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:00:22.336] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=619.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-15 13:00:22.337] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=67.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-15 13:00:22.337] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:00:22.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:00:22.339] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:00:22.375] [DEBUG] QUERY OK source="tms_terminals" db=35.3ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:00:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:00:22.375] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:00:22.376] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:00:22.412] [DEBUG] QUERY OK source="tms_terminals" db=35.3ms queue=0.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:00:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:00:22.436] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=36.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "efbcf8db-e7bb-4340-92ea-22af89223f0d", "2026-07-15T04:10:12Z", ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:00:22.436] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47273, oid: "efbcf8db-e7bb-4340-92ea-22af89223f0d", upload_time: "2026-07-15T04:10:12Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]} [2026-07-15 13:00:22.437] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:10:12Z", "value" => "morefun"} [2026-07-15 13:00:22.469] [DEBUG] QUERY OK db=32.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "morefun", "vendor", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407401, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.470] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:10:12Z", "value" => "kiosk_launcher"} [2026-07-15 13:00:22.494] [DEBUG] QUERY OK db=23.6ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "kiosk_launcher", "model", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407402, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.494] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:10:12Z", "value" => "1.0"} [2026-07-15 13:00:22.540] [DEBUG] QUERY OK db=45.6ms 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-15T04:10:12Z", "1.0", "app_version", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407403, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.541] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:10:12Z", "value" => "13"} [2026-07-15 13:00:22.573] [DEBUG] QUERY OK db=31.3ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "13", "android_version", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407404, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.573] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "933"} [2026-07-15 13:00:22.605] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "933", "ram_free_mb", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407405, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.605] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:10:12Z", "value" => "WIFI"} [2026-07-15 13:00:22.628] [DEBUG] QUERY OK db=22.7ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "WIFI", "network_type", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407406, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.628] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:10:12Z", "value" => "true"} [2026-07-15 13:00:22.665] [DEBUG] QUERY OK db=35.9ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "true", "kiosk_active", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407407, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.665] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:10:12Z", "value" => ""} [2026-07-15 13:00:22.688] [DEBUG] QUERY OK db=22.5ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:10:12Z", "sim_operator", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407408, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.688] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"} [2026-07-15 13:00:22.711] [DEBUG] QUERY OK db=22.3ms queue=0.2ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "UNKNOWN", "sim_number", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407409, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.712] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"} [2026-07-15 13:00:22.746] [DEBUG] QUERY OK db=33.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "UNKNOWN", "sim_iccid", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407410, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.746] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"} [2026-07-15 13:00:22.790] [DEBUG] QUERY OK db=43.2ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "UNKNOWN", "sim_imsi", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407411, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.790] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"} [2026-07-15 13:00:22.819] [DEBUG] QUERY OK db=28.4ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "UNKNOWN", "sim_iccid2", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407412, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.821] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:10:12Z", "value" => "UNKNOWN"} [2026-07-15 13:00:22.849] [DEBUG] QUERY OK db=28.3ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "UNKNOWN", "sim_imsi2", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407413, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.850] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "15"} [2026-07-15 13:00:22.885] [DEBUG] QUERY OK db=34.4ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "15", "data_usage_mb", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407414, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.885] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:10:12Z", "value" => "0"} [2026-07-15 13:00:22.910] [DEBUG] QUERY OK db=23.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "0", "mobile_data_mb", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407415, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.911] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:10:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:00:22.962] [DEBUG] QUERY OK db=49.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47273, ~N[2026-07-15 13:00:22], ~N[2026-07-15 13:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:22.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407416, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:10:12Z", message: nil, status_log_id: 47273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:22], updated_at: ~N[2026-07-15 13:00:22]}} [2026-07-15 13:00:22.965] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=55.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-15 13:00:22.971] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:00:22.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:00:22.981] [DEBUG] QUERY OK source="tms_terminal_status_items" db=2.1ms queue=1.0ms idle=12.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:00:52.333] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:00:52.334] [INFO ] Incoming JSON payload: {"oid":"123fb948-829c-4601-b88b-a08c5cac9369","sn":"98250623730001","uploadTime":"2026-07-15T04:10:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:10:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:00:52.335] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "123fb948-829c-4601-b88b-a08c5cac9369", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:10:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:10:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:10:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:10:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:10:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:10:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:10:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:10:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:10:42Z", "vendor" => "morefun"} [2026-07-15 13:00:52.336] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:00:52.336] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:00:52.336] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:00:52.337] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.1ms idle=1000.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-15 13:00:52.338] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=0.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-15 13:00:52.339] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:00:52.340] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:00:52.341] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:00:52.360] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms queue=0.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:00:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:00:52.360] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:00:52.361] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:00:52.405] [DEBUG] QUERY OK source="tms_terminals" db=43.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:00:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:00:52.440] [DEBUG] QUERY OK db=34.0ms idle=44.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "123fb948-829c-4601-b88b-a08c5cac9369", "2026-07-15T04:10:42Z", ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:00:52.440] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47274, oid: "123fb948-829c-4601-b88b-a08c5cac9369", upload_time: "2026-07-15T04:10:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]} [2026-07-15 13:00:52.440] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:10:42Z", "value" => "morefun"} [2026-07-15 13:00:52.475] [DEBUG] QUERY OK db=34.6ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "morefun", "vendor", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407417, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.476] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:10:42Z", "value" => "kiosk_launcher"} [2026-07-15 13:00:52.503] [DEBUG] QUERY OK db=26.2ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "kiosk_launcher", "model", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407418, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.503] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:10:42Z", "value" => "1.0"} [2026-07-15 13:00:52.527] [DEBUG] QUERY OK db=22.8ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "1.0", "app_version", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407419, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.528] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:10:42Z", "value" => "13"} [2026-07-15 13:00:52.551] [DEBUG] QUERY OK db=22.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "13", "android_version", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407420, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.551] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "932"} [2026-07-15 13:00:52.592] [DEBUG] QUERY OK db=39.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "932", "ram_free_mb", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407421, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.592] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:10:42Z", "value" => "WIFI"} [2026-07-15 13:00:52.626] [DEBUG] QUERY OK db=32.1ms queue=0.5ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "WIFI", "network_type", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407422, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.626] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:10:42Z", "value" => "true"} [2026-07-15 13:00:52.681] [DEBUG] QUERY OK db=54.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "true", "kiosk_active", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407423, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.681] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:10:42Z", "value" => ""} [2026-07-15 13:00:52.731] [DEBUG] QUERY OK db=48.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:10:42Z", "sim_operator", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407424, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.731] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"} [2026-07-15 13:00:52.754] [DEBUG] QUERY OK db=22.6ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "UNKNOWN", "sim_number", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407425, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.754] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"} [2026-07-15 13:00:52.786] [DEBUG] QUERY OK db=29.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "UNKNOWN", "sim_iccid", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407426, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.787] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"} [2026-07-15 13:00:52.823] [DEBUG] QUERY OK db=35.9ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "UNKNOWN", "sim_imsi", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407427, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.823] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"} [2026-07-15 13:00:52.863] [DEBUG] QUERY OK db=39.2ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "UNKNOWN", "sim_iccid2", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407428, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.863] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:10:42Z", "value" => "UNKNOWN"} [2026-07-15 13:00:52.887] [DEBUG] QUERY OK db=23.5ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "UNKNOWN", "sim_imsi2", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407429, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.888] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "15"} [2026-07-15 13:00:52.919] [DEBUG] QUERY OK db=31.3ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "15", "data_usage_mb", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407430, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.920] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:10:42Z", "value" => "0"} [2026-07-15 13:00:52.949] [DEBUG] QUERY OK db=28.5ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "0", "mobile_data_mb", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407431, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.950] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:10:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:00:52.988] [DEBUG] QUERY OK db=37.9ms queue=0.1ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:10:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47274, ~N[2026-07-15 13:00:52], ~N[2026-07-15 13:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:00:52.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407432, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:10:42Z", message: nil, status_log_id: 47274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:00:52], updated_at: ~N[2026-07-15 13:00:52]}} [2026-07-15 13:00:52.991] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=41.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-15 13:00:52.996] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:00:53.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:00:53.002] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.3ms idle=10.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:01:22.545] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:01:22.545] [INFO ] Incoming JSON payload: {"oid":"0c144767-e164-436a-8d1c-ff4a2e4c7cf8","sn":"98250623730001","uploadTime":"2026-07-15T04:11:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:11:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:01:22.546] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0c144767-e164-436a-8d1c-ff4a2e4c7cf8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:11:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:11:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:11:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:11:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:11:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:11:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:11:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:11:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:11:12Z", "vendor" => "morefun"} [2026-07-15 13:01:22.546] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:01:22.546] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:01:22.546] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:01:22.547] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=825.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:01:22.548] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=109.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-15 13:01:22.548] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:01:22.549] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:01:22.549] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:01:22.588] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:01:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:01:22.589] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:01:22.590] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=39.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:01:22.630] [DEBUG] QUERY OK source="tms_terminals" db=39.7ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:01:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:01:22.654] [DEBUG] QUERY OK db=23.1ms idle=40.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "0c144767-e164-436a-8d1c-ff4a2e4c7cf8", "2026-07-15T04:11:12Z", ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:01:22.654] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47275, oid: "0c144767-e164-436a-8d1c-ff4a2e4c7cf8", upload_time: "2026-07-15T04:11:12Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]} [2026-07-15 13:01:22.654] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:11:12Z", "value" => "morefun"} [2026-07-15 13:01:22.678] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "morefun", "vendor", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407433, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.679] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:11:12Z", "value" => "kiosk_launcher"} [2026-07-15 13:01:22.730] [DEBUG] QUERY OK db=50.6ms queue=0.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "kiosk_launcher", "model", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407434, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.731] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:11:12Z", "value" => "1.0"} [2026-07-15 13:01:22.754] [DEBUG] QUERY OK db=23.0ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "1.0", "app_version", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407435, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.756] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:11:12Z", "value" => "13"} [2026-07-15 13:01:22.800] [DEBUG] QUERY OK db=44.0ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "13", "android_version", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407436, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.801] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "930"} [2026-07-15 13:01:22.842] [DEBUG] QUERY OK db=41.1ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "930", "ram_free_mb", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407437, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.843] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:11:12Z", "value" => "WIFI"} [2026-07-15 13:01:22.886] [DEBUG] QUERY OK db=43.0ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "WIFI", "network_type", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407438, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.886] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:11:12Z", "value" => "true"} [2026-07-15 13:01:22.928] [DEBUG] QUERY OK db=40.9ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "true", "kiosk_active", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407439, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.928] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:11:12Z", "value" => ""} [2026-07-15 13:01:22.961] [DEBUG] QUERY OK db=31.7ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:11:12Z", "sim_operator", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407440, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.961] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"} [2026-07-15 13:01:22.997] [DEBUG] QUERY OK db=35.8ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "UNKNOWN", "sim_number", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:22.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407441, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:22.998] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"} [2026-07-15 13:01:23.028] [DEBUG] QUERY OK db=29.9ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "UNKNOWN", "sim_iccid", 47275, ~N[2026-07-15 13:01:22], ~N[2026-07-15 13:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407442, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:22], updated_at: ~N[2026-07-15 13:01:22]}} [2026-07-15 13:01:23.028] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"} [2026-07-15 13:01:23.060] [DEBUG] QUERY OK db=31.3ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "UNKNOWN", "sim_imsi", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407443, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.061] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"} [2026-07-15 13:01:23.095] [DEBUG] QUERY OK db=33.8ms 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-15T04:11:12Z", "UNKNOWN", "sim_iccid2", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407444, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.096] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:11:12Z", "value" => "UNKNOWN"} [2026-07-15 13:01:23.122] [DEBUG] QUERY OK db=26.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "UNKNOWN", "sim_imsi2", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407445, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.123] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "15"} [2026-07-15 13:01:23.168] [DEBUG] QUERY OK db=41.4ms queue=0.1ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "15", "data_usage_mb", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407446, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.168] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:11:12Z", "value" => "0"} [2026-07-15 13:01:23.191] [DEBUG] QUERY OK db=22.6ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "0", "mobile_data_mb", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407447, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.193] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:11:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:01:23.239] [DEBUG] QUERY OK db=44.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47275, ~N[2026-07-15 13:01:23], ~N[2026-07-15 13:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:23.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407448, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:11:12Z", message: nil, status_log_id: 47275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:23], updated_at: ~N[2026-07-15 13:01:23]}} [2026-07-15 13:01:23.242] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=49.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-15 13:01:23.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:01:23.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms queue=0.1ms idle=16.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:01:23.263] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.7ms idle=19.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:01:53.077] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:01:53.077] [INFO ] Incoming JSON payload: {"oid":"20a17cc3-ddf8-440e-8eb0-3c782959ce95","sn":"98250623730001","uploadTime":"2026-07-15T04:11:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:11:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:01:53.078] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "20a17cc3-ddf8-440e-8eb0-3c782959ce95", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:11:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:11:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:11:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:11:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:11:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:11:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:11:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:11:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:11:42Z", "vendor" => "morefun"} [2026-07-15 13:01:53.078] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:01:53.078] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:01:53.078] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:01:53.079] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=552.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-15 13:01:53.080] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=357.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-15 13:01:53.080] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:01:53.080] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:01:53.081] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:01:53.108] [DEBUG] QUERY OK source="tms_terminals" db=27.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:01:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:01:53.108] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:01:53.109] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=28.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:01:53.132] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:01:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:01:53.167] [DEBUG] QUERY OK db=34.5ms idle=23.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "20a17cc3-ddf8-440e-8eb0-3c782959ce95", "2026-07-15T04:11:42Z", ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:01:53.167] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47276, oid: "20a17cc3-ddf8-440e-8eb0-3c782959ce95", upload_time: "2026-07-15T04:11:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]} [2026-07-15 13:01:53.167] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:11:42Z", "value" => "morefun"} [2026-07-15 13:01:53.180] [DEBUG] QUERY OK db=12.1ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "morefun", "vendor", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407449, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.180] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:11:42Z", "value" => "kiosk_launcher"} [2026-07-15 13:01:53.204] [DEBUG] QUERY OK db=23.1ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "kiosk_launcher", "model", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407450, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.204] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:11:42Z", "value" => "1.0"} [2026-07-15 13:01:53.235] [DEBUG] QUERY OK db=29.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "1.0", "app_version", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407451, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.235] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:11:42Z", "value" => "13"} [2026-07-15 13:01:53.271] [DEBUG] QUERY OK db=35.6ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "13", "android_version", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407452, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.272] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "930"} [2026-07-15 13:01:53.314] [DEBUG] QUERY OK db=41.4ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "930", "ram_free_mb", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407453, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.314] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:11:42Z", "value" => "WIFI"} [2026-07-15 13:01:53.334] [DEBUG] QUERY OK db=19.8ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "WIFI", "network_type", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407454, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.335] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:11:42Z", "value" => "true"} [2026-07-15 13:01:53.386] [DEBUG] QUERY OK db=50.4ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "true", "kiosk_active", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407455, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.386] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:11:42Z", "value" => ""} [2026-07-15 13:01:53.412] [DEBUG] QUERY OK db=25.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:11:42Z", "sim_operator", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407456, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.412] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"} [2026-07-15 13:01:53.434] [DEBUG] QUERY OK db=21.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "UNKNOWN", "sim_number", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407457, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.434] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"} [2026-07-15 13:01:53.447] [DEBUG] QUERY OK db=12.4ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "UNKNOWN", "sim_iccid", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407458, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.448] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"} [2026-07-15 13:01:53.481] [DEBUG] QUERY OK db=33.2ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "UNKNOWN", "sim_imsi", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407459, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.482] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"} [2026-07-15 13:01:53.519] [DEBUG] QUERY OK db=35.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "UNKNOWN", "sim_iccid2", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407460, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.519] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:11:42Z", "value" => "UNKNOWN"} [2026-07-15 13:01:53.560] [DEBUG] QUERY OK db=40.7ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "UNKNOWN", "sim_imsi2", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407461, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.561] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "15"} [2026-07-15 13:01:53.591] [DEBUG] QUERY OK db=30.3ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "15", "data_usage_mb", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407462, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.592] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:11:42Z", "value" => "0"} [2026-07-15 13:01:53.614] [DEBUG] QUERY OK db=22.3ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "0", "mobile_data_mb", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407463, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.615] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:11:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:01:53.662] [DEBUG] QUERY OK db=45.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:11:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47276, ~N[2026-07-15 13:01:53], ~N[2026-07-15 13:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:01:53.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407464, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:11:42Z", message: nil, status_log_id: 47276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:01:53], updated_at: ~N[2026-07-15 13:01:53]}} [2026-07-15 13:01:53.664] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=49.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-15 13:01:53.669] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:01:53.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:01:53.676] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.5ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:02:23.065] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:02:23.066] [INFO ] Incoming JSON payload: {"oid":"dfef42fb-d59f-405a-afbb-b699f0a82ab9","sn":"98250623730001","uploadTime":"2026-07-15T04:12:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"ram_free_mb","value":"926","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:12:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:02:23.067] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dfef42fb-d59f-405a-afbb-b699f0a82ab9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:12:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:12:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:12:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:12:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "926"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:12:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:12:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:12:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:12:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:12:13Z", "vendor" => "morefun"} [2026-07-15 13:02:23.068] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:02:23.069] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:02:23.071] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:02:23.073] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.4ms idle=1042.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-15 13:02:23.074] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=445.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-15 13:02:23.074] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:02:23.076] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:02:23.076] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:02:23.108] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:02:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:02:23.108] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:02:23.109] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=32.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:02:23.134] [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-15 13:02:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:02:23.165] [DEBUG] QUERY OK db=29.9ms idle=25.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "dfef42fb-d59f-405a-afbb-b699f0a82ab9", "2026-07-15T04:12:13Z", ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:02:23.165] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47277, oid: "dfef42fb-d59f-405a-afbb-b699f0a82ab9", upload_time: "2026-07-15T04:12:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]} [2026-07-15 13:02:23.165] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:12:13Z", "value" => "morefun"} [2026-07-15 13:02:23.213] [DEBUG] QUERY OK db=47.3ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "morefun", "vendor", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407465, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.213] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:12:13Z", "value" => "kiosk_launcher"} [2026-07-15 13:02:23.243] [DEBUG] QUERY OK db=29.6ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "kiosk_launcher", "model", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407466, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.244] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:12:13Z", "value" => "1.0"} [2026-07-15 13:02:23.271] [DEBUG] QUERY OK db=26.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "1.0", "app_version", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407467, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.271] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:12:13Z", "value" => "13"} [2026-07-15 13:02:23.314] [DEBUG] QUERY OK db=42.0ms queue=0.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "13", "android_version", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407468, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.315] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "926"} [2026-07-15 13:02:23.345] [DEBUG] QUERY OK db=29.3ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "926", "ram_free_mb", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407469, itemkey: "ram_free_mb", value: "926", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.345] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:12:13Z", "value" => "WIFI"} [2026-07-15 13:02:23.379] [DEBUG] QUERY OK db=33.4ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "WIFI", "network_type", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407470, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.380] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:12:13Z", "value" => "true"} [2026-07-15 13:02:23.413] [DEBUG] QUERY OK db=32.7ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "true", "kiosk_active", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407471, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.413] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:12:13Z", "value" => ""} [2026-07-15 13:02:23.437] [DEBUG] QUERY OK db=23.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:12:13Z", "sim_operator", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407472, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.438] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"} [2026-07-15 13:02:23.502] [DEBUG] QUERY OK db=63.6ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "UNKNOWN", "sim_number", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407473, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"} [2026-07-15 13:02:23.529] [DEBUG] QUERY OK db=24.5ms queue=0.5ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "UNKNOWN", "sim_iccid", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407474, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.530] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"} [2026-07-15 13:02:23.577] [DEBUG] QUERY OK db=46.4ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "UNKNOWN", "sim_imsi", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407475, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.578] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"} [2026-07-15 13:02:23.624] [DEBUG] QUERY OK db=43.7ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "UNKNOWN", "sim_iccid2", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407476, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.624] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:12:13Z", "value" => "UNKNOWN"} [2026-07-15 13:02:23.663] [DEBUG] QUERY OK db=38.3ms queue=0.2ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "UNKNOWN", "sim_imsi2", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407477, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.663] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "15"} [2026-07-15 13:02:23.699] [DEBUG] QUERY OK db=34.5ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "15", "data_usage_mb", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407478, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.700] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:12:13Z", "value" => "0"} [2026-07-15 13:02:23.729] [DEBUG] QUERY OK db=28.5ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "0", "mobile_data_mb", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407479, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.733] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:12:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:02:23.769] [DEBUG] QUERY OK db=34.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47277, ~N[2026-07-15 13:02:23], ~N[2026-07-15 13:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:23.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407480, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:12:13Z", message: nil, status_log_id: 47277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:23], updated_at: ~N[2026-07-15 13:02:23]}} [2026-07-15 13:02:23.772] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:02:23.777] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:02:23.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:02:23.784] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.3ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:02:53.066] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:02:53.066] [INFO ] Incoming JSON payload: {"oid":"f7270204-649c-434f-aed6-bd7492e84130","sn":"98250623730001","uploadTime":"2026-07-15T04:12:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:12:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:02:53.068] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f7270204-649c-434f-aed6-bd7492e84130", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:12:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:12:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:12:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:12:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:12:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:12:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:12:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:12:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:12:43Z", "vendor" => "morefun"} [2026-07-15 13:02:53.068] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:02:53.068] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:02:53.069] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:02:53.070] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1347.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-15 13:02:53.071] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=364.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-15 13:02:53.071] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:02:53.073] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:02:53.073] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:02:53.104] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:02:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:02:53.104] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:02:53.105] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:02:53.139] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:02:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:02:53.184] [DEBUG] QUERY OK db=44.9ms idle=34.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "f7270204-649c-434f-aed6-bd7492e84130", "2026-07-15T04:12:43Z", ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:02:53.185] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47278, oid: "f7270204-649c-434f-aed6-bd7492e84130", upload_time: "2026-07-15T04:12:43Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]} [2026-07-15 13:02:53.185] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:12:43Z", "value" => "morefun"} [2026-07-15 13:02:53.222] [DEBUG] QUERY OK db=36.9ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "morefun", "vendor", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407481, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.223] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:12:43Z", "value" => "kiosk_launcher"} [2026-07-15 13:02:53.279] [DEBUG] QUERY OK db=55.0ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "kiosk_launcher", "model", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407482, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.279] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:12:43Z", "value" => "1.0"} [2026-07-15 13:02:53.306] [DEBUG] QUERY OK db=25.6ms queue=0.5ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "1.0", "app_version", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407483, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.306] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:12:43Z", "value" => "13"} [2026-07-15 13:02:53.366] [DEBUG] QUERY OK db=59.5ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "13", "android_version", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407484, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.367] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "933"} [2026-07-15 13:02:53.419] [DEBUG] QUERY OK db=51.8ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "933", "ram_free_mb", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407485, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.419] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:12:43Z", "value" => "WIFI"} [2026-07-15 13:02:53.457] [DEBUG] QUERY OK db=36.9ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "WIFI", "network_type", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407486, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.457] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:12:43Z", "value" => "true"} [2026-07-15 13:02:53.508] [DEBUG] QUERY OK db=50.5ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "true", "kiosk_active", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407487, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.508] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:12:43Z", "value" => ""} [2026-07-15 13:02:53.542] [DEBUG] QUERY OK db=32.8ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:12:43Z", "sim_operator", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407488, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.542] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"} [2026-07-15 13:02:53.591] [DEBUG] QUERY OK db=48.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "UNKNOWN", "sim_number", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407489, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.592] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"} [2026-07-15 13:02:53.643] [DEBUG] QUERY OK db=51.3ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "UNKNOWN", "sim_iccid", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407490, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.644] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"} [2026-07-15 13:02:53.689] [DEBUG] QUERY OK db=44.9ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "UNKNOWN", "sim_imsi", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407491, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.690] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"} [2026-07-15 13:02:53.722] [DEBUG] QUERY OK db=31.9ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "UNKNOWN", "sim_iccid2", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407492, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.722] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:12:43Z", "value" => "UNKNOWN"} [2026-07-15 13:02:53.764] [DEBUG] QUERY OK db=41.0ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "UNKNOWN", "sim_imsi2", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407493, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.764] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "15"} [2026-07-15 13:02:53.787] [DEBUG] QUERY OK db=22.8ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "15", "data_usage_mb", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407494, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.788] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:12:43Z", "value" => "0"} [2026-07-15 13:02:53.811] [DEBUG] QUERY OK db=22.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "0", "mobile_data_mb", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407495, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.812] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:12:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:02:53.856] [DEBUG] QUERY OK db=43.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:12:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47278, ~N[2026-07-15 13:02:53], ~N[2026-07-15 13:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:02:53.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407496, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:12:43Z", message: nil, status_log_id: 47278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:02:53], updated_at: ~N[2026-07-15 13:02:53]}} [2026-07-15 13:02:53.859] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=46.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-15 13:02:53.864] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:02:53.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:02:53.874] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=2.7ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:03:24.113] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:03:24.114] [INFO ] Incoming JSON payload: {"oid":"632f82f3-b800-4289-89b1-cf466d9b1526","sn":"98250623730001","uploadTime":"2026-07-15T04:13:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:13:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:03:24.115] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "632f82f3-b800-4289-89b1-cf466d9b1526", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:13:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:13:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:13:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:13:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:13:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:13:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:13:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:13:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:13:13Z", "vendor" => "morefun"} [2026-07-15 13:03:24.115] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:03:24.115] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:03:24.116] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:03:24.117] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.3ms idle=394.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-15 13:03:24.117] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=296.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-15 13:03:24.117] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:03:24.119] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:03:24.119] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:03:24.144] [DEBUG] QUERY OK source="tms_terminals" db=24.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:03:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:03:24.145] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:03:24.146] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=26.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:03:24.170] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:03:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:03:24.204] [DEBUG] QUERY OK db=32.8ms queue=0.2ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "632f82f3-b800-4289-89b1-cf466d9b1526", "2026-07-15T04:13:13Z", ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:03:24.204] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47279, oid: "632f82f3-b800-4289-89b1-cf466d9b1526", upload_time: "2026-07-15T04:13:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]} [2026-07-15 13:03:24.204] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:13:13Z", "value" => "morefun"} [2026-07-15 13:03:24.233] [DEBUG] QUERY OK db=28.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "morefun", "vendor", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407497, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.233] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:13:13Z", "value" => "kiosk_launcher"} [2026-07-15 13:03:24.268] [DEBUG] QUERY OK db=32.9ms queue=0.8ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "kiosk_launcher", "model", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407498, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.268] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:13:13Z", "value" => "1.0"} [2026-07-15 13:03:24.294] [DEBUG] QUERY OK db=24.9ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "1.0", "app_version", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407499, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.294] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:13:13Z", "value" => "13"} [2026-07-15 13:03:24.318] [DEBUG] QUERY OK db=23.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "13", "android_version", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407500, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.319] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "932"} [2026-07-15 13:03:24.342] [DEBUG] QUERY OK db=23.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "932", "ram_free_mb", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407501, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.343] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:13:13Z", "value" => "WIFI"} [2026-07-15 13:03:24.370] [DEBUG] QUERY OK db=26.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "WIFI", "network_type", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407502, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.370] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:13:13Z", "value" => "true"} [2026-07-15 13:03:24.408] [DEBUG] QUERY OK db=37.4ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "true", "kiosk_active", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407503, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.409] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:13:13Z", "value" => ""} [2026-07-15 13:03:24.441] [DEBUG] QUERY OK db=31.7ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:13:13Z", "sim_operator", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407504, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.442] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"} [2026-07-15 13:03:24.461] [DEBUG] QUERY OK db=18.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "UNKNOWN", "sim_number", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407505, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.461] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"} [2026-07-15 13:03:24.492] [DEBUG] QUERY OK db=30.3ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "UNKNOWN", "sim_iccid", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407506, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.493] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"} [2026-07-15 13:03:24.520] [DEBUG] QUERY OK db=27.3ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "UNKNOWN", "sim_imsi", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407507, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.521] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"} [2026-07-15 13:03:24.545] [DEBUG] QUERY OK db=23.7ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "UNKNOWN", "sim_iccid2", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407508, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.546] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:13:13Z", "value" => "UNKNOWN"} [2026-07-15 13:03:24.580] [DEBUG] QUERY OK db=33.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "UNKNOWN", "sim_imsi2", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407509, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.581] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "15"} [2026-07-15 13:03:24.601] [DEBUG] QUERY OK db=20.0ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "15", "data_usage_mb", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407510, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.602] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:13:13Z", "value" => "0"} [2026-07-15 13:03:24.635] [DEBUG] QUERY OK db=32.3ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "0", "mobile_data_mb", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407511, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.637] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:13:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:03:24.661] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47279, ~N[2026-07-15 13:03:24], ~N[2026-07-15 13:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:24.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407512, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:13:13Z", message: nil, status_log_id: 47279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:24], updated_at: ~N[2026-07-15 13:03:24]}} [2026-07-15 13:03:24.664] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=28.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:03:24.672] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:03:24.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=12.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:03:24.679] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.6ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:03:53.279] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:03:53.279] [INFO ] Incoming JSON payload: {"oid":"fcfc23ee-f452-4f5d-869a-d626cd8f3bf1","sn":"98250623730001","uploadTime":"2026-07-15T04:13:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:13:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:03:53.282] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fcfc23ee-f452-4f5d-869a-d626cd8f3bf1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:13:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:13:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:13:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:13:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:13:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:13:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:13:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:13:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:13:43Z", "vendor" => "morefun"} [2026-07-15 13:03:53.282] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:03:53.282] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:03:53.283] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:03:53.284] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1391.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-15 13:03:53.285] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=390.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-15 13:03:53.285] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:03:53.287] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:03:53.287] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:03:53.312] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:03:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:03:53.312] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:03:53.314] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.5ms idle=26.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:03:53.367] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:03:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:03:53.423] [DEBUG] QUERY OK db=56.1ms idle=53.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "fcfc23ee-f452-4f5d-869a-d626cd8f3bf1", "2026-07-15T04:13:43Z", ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:03:53.424] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47280, oid: "fcfc23ee-f452-4f5d-869a-d626cd8f3bf1", upload_time: "2026-07-15T04:13:43Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]} [2026-07-15 13:03:53.424] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:13:43Z", "value" => "morefun"} [2026-07-15 13:03:53.443] [INFO ] Running offline device check... [2026-07-15 13:03:53.443] [INFO ] Starting offline device check... [2026-07-15 13:03:53.445] [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 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 13:03:53.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.463] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.468] [DEBUG] QUERY OK db=42.9ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "morefun", "vendor", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.468] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407513, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.469] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:13:43Z", "value" => "kiosk_launcher"} [2026-07-15 13:03:53.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.513] [DEBUG] QUERY OK db=44.2ms idle=0.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "kiosk_launcher", "model", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407514, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.513] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:13:43Z", "value" => "1.0"} [2026-07-15 13:03:53.526] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:03:53], 11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:03:53.526] [INFO ] Terminal 61251020798002 back online [2026-07-15 13:03:53.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.550] [DEBUG] QUERY OK db=36.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "1.0", "app_version", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407515, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.551] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:13:43Z", "value" => "13"} [2026-07-15 13:03:53.594] [DEBUG] QUERY OK source="tms_terminals" db=50.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:03:53], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:03:53.594] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 13:03:53.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 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-15 13:03:53.596] [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 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-15 13:03:53.609] [DEBUG] QUERY OK db=57.4ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "13", "android_version", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407516, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.611] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "932"} [2026-07-15 13:03:53.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.615] [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 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-15 13:03:53.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.621] [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 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-15 13:03:53.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.644] [DEBUG] QUERY OK db=32.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-15T04:13:43Z", "932", "ram_free_mb", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407517, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.645] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:13:43Z", "value" => "WIFI"} [2026-07-15 13:03:53.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.3ms decode=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.690] [DEBUG] QUERY OK source="tms_terminals" db=44.3ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:03:53], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:03:53.690] [DEBUG] QUERY OK db=44.6ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "WIFI", "network_type", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.690] [INFO ] Terminal 98251226730001 back online [2026-07-15 13:03:53.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407518, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.691] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:13:43Z", "value" => "true"} [2026-07-15 13:03:53.691] [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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.692] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.703] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.708] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.710] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.711] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.712] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.713] [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-15 13:03:53.714] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.715] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.717] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:03:53.717] [INFO ] Offline device check completed. Found 37 offline devices, updated 3 statuses. [2026-07-15 13:03:53.717] [INFO ] Offline device check completed successfully [2026-07-15 13:03:53.749] [DEBUG] QUERY OK db=57.9ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "true", "kiosk_active", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407519, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.749] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:13:43Z", "value" => ""} [2026-07-15 13:03:53.794] [DEBUG] QUERY OK db=43.6ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:13:43Z", "sim_operator", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407520, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.794] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"} [2026-07-15 13:03:53.806] [DEBUG] QUERY OK db=11.6ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "UNKNOWN", "sim_number", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407521, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.807] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"} [2026-07-15 13:03:53.873] [DEBUG] QUERY OK db=66.1ms queue=0.1ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "UNKNOWN", "sim_iccid", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407522, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.874] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"} [2026-07-15 13:03:53.921] [DEBUG] QUERY OK db=47.4ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "UNKNOWN", "sim_imsi", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407523, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.922] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"} [2026-07-15 13:03:53.983] [DEBUG] QUERY OK db=60.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "UNKNOWN", "sim_iccid2", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:53.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407524, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:53.983] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:13:43Z", "value" => "UNKNOWN"} [2026-07-15 13:03:54.021] [DEBUG] QUERY OK db=37.8ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "UNKNOWN", "sim_imsi2", 47280, ~N[2026-07-15 13:03:53], ~N[2026-07-15 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:54.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407525, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:53], updated_at: ~N[2026-07-15 13:03:53]}} [2026-07-15 13:03:54.022] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "15"} [2026-07-15 13:03:54.068] [DEBUG] QUERY OK db=45.6ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "15", "data_usage_mb", 47280, ~N[2026-07-15 13:03:54], ~N[2026-07-15 13:03:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:54.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407526, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:54], updated_at: ~N[2026-07-15 13:03:54]}} [2026-07-15 13:03:54.068] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:13:43Z", "value" => "0"} [2026-07-15 13:03:54.101] [DEBUG] QUERY OK db=32.0ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "0", "mobile_data_mb", 47280, ~N[2026-07-15 13:03:54], ~N[2026-07-15 13:03:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:54.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407527, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:54], updated_at: ~N[2026-07-15 13:03:54]}} [2026-07-15 13:03:54.102] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:13:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:03:54.168] [DEBUG] QUERY OK db=65.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:13:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47280, ~N[2026-07-15 13:03:54], ~N[2026-07-15 13:03:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:03:54.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407528, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:13:43Z", message: nil, status_log_id: 47280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:03:54], updated_at: ~N[2026-07-15 13:03:54]}} [2026-07-15 13:03:54.170] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=68.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-15 13:03:54.174] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:03:54.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:03:54.180] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.5ms idle=8.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:04:23.591] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:04:23.591] [INFO ] Incoming JSON payload: {"oid":"79ce8414-f810-42f4-933a-4c00a7aae948","sn":"98250623730001","uploadTime":"2026-07-15T04:14:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:14:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:04:23.593] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "79ce8414-f810-42f4-933a-4c00a7aae948", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:14:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:14:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:14:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:14:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:14:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:14:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:14:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:14:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:14:13Z", "vendor" => "morefun"} [2026-07-15 13:04:23.593] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:04:23.593] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:04:23.593] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:04:23.595] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=1584.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-15 13:04:23.596] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=583.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-15 13:04:23.597] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:04:23.599] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:04:23.599] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:04:23.669] [DEBUG] QUERY OK source="tms_terminals" db=69.4ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:04:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:04:23.669] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:04:23.671] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms idle=70.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:04:23.708] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:04:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:04:23.761] [DEBUG] QUERY OK db=52.4ms idle=37.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "79ce8414-f810-42f4-933a-4c00a7aae948", "2026-07-15T04:14:13Z", ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:04:23.761] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47281, oid: "79ce8414-f810-42f4-933a-4c00a7aae948", upload_time: "2026-07-15T04:14:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]} [2026-07-15 13:04:23.762] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:14:13Z", "value" => "morefun"} [2026-07-15 13:04:23.781] [DEBUG] QUERY OK db=17.5ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "morefun", "vendor", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407529, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.781] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:14:13Z", "value" => "kiosk_launcher"} [2026-07-15 13:04:23.820] [DEBUG] QUERY OK db=37.8ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "kiosk_launcher", "model", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407530, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.820] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:14:13Z", "value" => "1.0"} [2026-07-15 13:04:23.852] [DEBUG] QUERY OK db=32.0ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "1.0", "app_version", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407531, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.853] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:14:13Z", "value" => "13"} [2026-07-15 13:04:23.868] [DEBUG] QUERY OK db=13.9ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "13", "android_version", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407532, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.868] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "932"} [2026-07-15 13:04:23.900] [DEBUG] QUERY OK db=31.3ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "932", "ram_free_mb", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407533, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.900] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:14:13Z", "value" => "WIFI"} [2026-07-15 13:04:23.923] [DEBUG] QUERY OK db=22.5ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "WIFI", "network_type", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407534, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.924] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:14:13Z", "value" => "true"} [2026-07-15 13:04:23.958] [DEBUG] QUERY OK db=33.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "true", "kiosk_active", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407535, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.959] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:14:13Z", "value" => ""} [2026-07-15 13:04:23.991] [DEBUG] QUERY OK db=31.1ms queue=0.6ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:14:13Z", "sim_operator", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:23.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407536, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:23.991] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"} [2026-07-15 13:04:24.015] [DEBUG] QUERY OK db=22.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "UNKNOWN", "sim_number", 47281, ~N[2026-07-15 13:04:23], ~N[2026-07-15 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407537, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:23], updated_at: ~N[2026-07-15 13:04:23]}} [2026-07-15 13:04:24.015] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"} [2026-07-15 13:04:24.068] [DEBUG] QUERY OK db=52.1ms queue=0.2ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "UNKNOWN", "sim_iccid", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407538, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"} [2026-07-15 13:04:24.104] [DEBUG] QUERY OK db=34.9ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "UNKNOWN", "sim_imsi", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407539, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.104] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"} [2026-07-15 13:04:24.157] [DEBUG] QUERY OK db=52.2ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "UNKNOWN", "sim_iccid2", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407540, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.157] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:14:13Z", "value" => "UNKNOWN"} [2026-07-15 13:04:24.191] [DEBUG] QUERY OK db=33.3ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "UNKNOWN", "sim_imsi2", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407541, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.191] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "15"} [2026-07-15 13:04:24.228] [DEBUG] QUERY OK db=36.1ms 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-15T04:14:13Z", "15", "data_usage_mb", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407542, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.228] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:14:13Z", "value" => "0"} [2026-07-15 13:04:24.263] [DEBUG] QUERY OK db=34.7ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "0", "mobile_data_mb", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407543, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.264] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:14:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:04:24.297] [DEBUG] QUERY OK db=31.7ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47281, ~N[2026-07-15 13:04:24], ~N[2026-07-15 13:04:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:24.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407544, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:14:13Z", message: nil, status_log_id: 47281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:24], updated_at: ~N[2026-07-15 13:04:24]}} [2026-07-15 13:04:24.299] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:04:24.304] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:04:24.308] [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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:04:24.310] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:04:53.591] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:04:53.591] [INFO ] Incoming JSON payload: {"oid":"dacff825-8532-4e87-8e95-39797490e532","sn":"98250623730001","uploadTime":"2026-07-15T04:14:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:14:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:04:53.592] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dacff825-8532-4e87-8e95-39797490e532", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:14:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:14:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:14:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:14:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:14:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:14:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:14:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:14:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:14:43Z", "vendor" => "morefun"} [2026-07-15 13:04:53.592] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:04:53.593] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:04:53.593] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:04:53.595] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.2ms idle=1503.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:04:53.595] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=503.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-15 13:04:53.595] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:04:53.596] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:04:53.596] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:04:53.624] [DEBUG] QUERY OK source="tms_terminals" db=27.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:04:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:04:53.625] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:04:53.626] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:04:53.658] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:04:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:04:53.686] [DEBUG] QUERY OK db=27.6ms idle=32.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "dacff825-8532-4e87-8e95-39797490e532", "2026-07-15T04:14:43Z", ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:04:53.687] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47282, oid: "dacff825-8532-4e87-8e95-39797490e532", upload_time: "2026-07-15T04:14:43Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]} [2026-07-15 13:04:53.687] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:14:43Z", "value" => "morefun"} [2026-07-15 13:04:53.719] [DEBUG] QUERY OK db=30.9ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "morefun", "vendor", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407545, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.719] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:14:43Z", "value" => "kiosk_launcher"} [2026-07-15 13:04:53.794] [DEBUG] QUERY OK db=74.6ms queue=0.1ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "kiosk_launcher", "model", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407546, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.795] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:14:43Z", "value" => "1.0"} [2026-07-15 13:04:53.887] [DEBUG] QUERY OK db=91.2ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "1.0", "app_version", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407547, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.887] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:14:43Z", "value" => "13"} [2026-07-15 13:04:53.927] [DEBUG] QUERY OK db=39.1ms queue=0.3ms idle=93.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "13", "android_version", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407548, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.928] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "931"} [2026-07-15 13:04:53.955] [DEBUG] QUERY OK db=26.2ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "931", "ram_free_mb", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407549, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.955] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:14:43Z", "value" => "WIFI"} [2026-07-15 13:04:53.991] [DEBUG] QUERY OK db=35.7ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "WIFI", "network_type", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:53.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407550, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:53.992] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:14:43Z", "value" => "true"} [2026-07-15 13:04:54.024] [DEBUG] QUERY OK db=31.2ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "true", "kiosk_active", 47282, ~N[2026-07-15 13:04:53], ~N[2026-07-15 13:04:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407551, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:53], updated_at: ~N[2026-07-15 13:04:53]}} [2026-07-15 13:04:54.024] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:14:43Z", "value" => ""} [2026-07-15 13:04:54.046] [DEBUG] QUERY OK db=22.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:14:43Z", "sim_operator", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407552, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.047] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"} [2026-07-15 13:04:54.069] [DEBUG] QUERY OK db=22.0ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "UNKNOWN", "sim_number", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407553, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.070] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"} [2026-07-15 13:04:54.093] [DEBUG] QUERY OK db=23.2ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "UNKNOWN", "sim_iccid", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407554, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.093] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"} [2026-07-15 13:04:54.161] [DEBUG] QUERY OK db=67.5ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "UNKNOWN", "sim_imsi", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407555, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.162] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"} [2026-07-15 13:04:54.198] [DEBUG] QUERY OK db=36.1ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "UNKNOWN", "sim_iccid2", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407556, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.199] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:14:43Z", "value" => "UNKNOWN"} [2026-07-15 13:04:54.240] [DEBUG] QUERY OK db=40.4ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "UNKNOWN", "sim_imsi2", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407557, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.240] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "15"} [2026-07-15 13:04:54.338] [DEBUG] QUERY OK db=97.7ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "15", "data_usage_mb", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407558, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.339] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:14:43Z", "value" => "0"} [2026-07-15 13:04:54.362] [DEBUG] QUERY OK db=23.3ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "0", "mobile_data_mb", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407559, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.364] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:14:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:04:54.408] [DEBUG] QUERY OK db=42.6ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:14:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47282, ~N[2026-07-15 13:04:54], ~N[2026-07-15 13:04:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:04:54.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407560, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:14:43Z", message: nil, status_log_id: 47282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:04:54], updated_at: ~N[2026-07-15 13:04:54]}} [2026-07-15 13:04:54.410] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=47.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-15 13:04:54.415] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:04:54.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:04:54.422] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.6ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:05:24.109] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:05:24.109] [INFO ] Incoming JSON payload: {"oid":"cfd5513e-6403-4b78-9a53-be6af5645e38","sn":"98250623730001","uploadTime":"2026-07-15T04:15:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:15:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:05:24.112] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cfd5513e-6403-4b78-9a53-be6af5645e38", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:15:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:15:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:15:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:15:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:15:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:15:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:15:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:15:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:15:13Z", "vendor" => "morefun"} [2026-07-15 13:05:24.112] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:05:24.112] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:05:24.112] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:05:24.113] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1372.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-15 13:05:24.116] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=925.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-15 13:05:24.116] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:05:24.117] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:05:24.118] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:05:24.189] [DEBUG] QUERY OK source="tms_terminals" db=69.4ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:05:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:05:24.189] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:05:24.190] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=72.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:05:24.228] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:05:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:05:24.259] [DEBUG] QUERY OK db=30.6ms idle=35.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "cfd5513e-6403-4b78-9a53-be6af5645e38", "2026-07-15T04:15:13Z", ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:05:24.259] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47283, oid: "cfd5513e-6403-4b78-9a53-be6af5645e38", upload_time: "2026-07-15T04:15:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]} [2026-07-15 13:05:24.259] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:15:13Z", "value" => "morefun"} [2026-07-15 13:05:24.303] [DEBUG] QUERY OK db=43.5ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "morefun", "vendor", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407561, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.304] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:15:13Z", "value" => "kiosk_launcher"} [2026-07-15 13:05:24.338] [DEBUG] QUERY OK db=33.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "kiosk_launcher", "model", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407562, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.339] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:15:13Z", "value" => "1.0"} [2026-07-15 13:05:24.374] [DEBUG] QUERY OK db=33.9ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "1.0", "app_version", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407563, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.375] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:15:13Z", "value" => "13"} [2026-07-15 13:05:24.409] [DEBUG] QUERY OK db=34.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "13", "android_version", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407564, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.410] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "931"} [2026-07-15 13:05:24.459] [DEBUG] QUERY OK db=48.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "931", "ram_free_mb", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407565, itemkey: "ram_free_mb", value: "931", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.459] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:15:13Z", "value" => "WIFI"} [2026-07-15 13:05:24.503] [DEBUG] QUERY OK db=42.9ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "WIFI", "network_type", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407566, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.504] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:15:13Z", "value" => "true"} [2026-07-15 13:05:24.572] [DEBUG] QUERY OK db=67.6ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "true", "kiosk_active", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407567, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.572] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:15:13Z", "value" => ""} [2026-07-15 13:05:24.617] [DEBUG] QUERY OK db=44.7ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:15:13Z", "sim_operator", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407568, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.618] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"} [2026-07-15 13:05:24.661] [DEBUG] QUERY OK db=42.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "UNKNOWN", "sim_number", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407569, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.661] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"} [2026-07-15 13:05:24.695] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "UNKNOWN", "sim_iccid", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407570, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.696] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"} [2026-07-15 13:05:24.746] [DEBUG] QUERY OK db=49.9ms 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-15T04:15:13Z", "UNKNOWN", "sim_imsi", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407571, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.747] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"} [2026-07-15 13:05:24.781] [DEBUG] QUERY OK db=33.2ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "UNKNOWN", "sim_iccid2", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407572, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.781] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:15:13Z", "value" => "UNKNOWN"} [2026-07-15 13:05:24.804] [DEBUG] QUERY OK db=22.5ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "UNKNOWN", "sim_imsi2", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407573, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.805] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "15"} [2026-07-15 13:05:24.826] [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-15T04:15:13Z", "15", "data_usage_mb", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407574, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.826] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:15:13Z", "value" => "0"} [2026-07-15 13:05:24.857] [DEBUG] QUERY OK db=30.5ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "0", "mobile_data_mb", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407575, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.859] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:15:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:05:24.878] [DEBUG] QUERY OK db=18.2ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47283, ~N[2026-07-15 13:05:24], ~N[2026-07-15 13:05:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:24.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407576, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:15:13Z", message: nil, status_log_id: 47283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:24], updated_at: ~N[2026-07-15 13:05:24]}} [2026-07-15 13:05:24.880] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-15 13:05:24.885] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:05:24.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:05:24.893] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.7ms 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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:05:54.213] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:05:54.214] [INFO ] Incoming JSON payload: {"oid":"2e1fa500-e326-4b69-98bb-29c1595626b5","sn":"98250623730001","uploadTime":"2026-07-15T04:15:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:15:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:05:54.217] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2e1fa500-e326-4b69-98bb-29c1595626b5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:15:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:15:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:15:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:15:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:15:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:15:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:15:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:15:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:15:44Z", "vendor" => "morefun"} [2026-07-15 13:05:54.217] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:05:54.217] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:05:54.217] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:05:54.219] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.1ms idle=1472.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-15 13:05:54.219] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=949.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 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-15 13:05:54.219] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:05:54.220] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:05:54.223] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:05:54.266] [DEBUG] QUERY OK source="tms_terminals" db=42.4ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:05:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:05:54.266] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:05:54.267] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=45.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:05:54.299] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:05:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:05:54.352] [DEBUG] QUERY OK db=52.4ms idle=27.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "2e1fa500-e326-4b69-98bb-29c1595626b5", "2026-07-15T04:15:44Z", ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:05:54.352] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47284, oid: "2e1fa500-e326-4b69-98bb-29c1595626b5", upload_time: "2026-07-15T04:15:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]} [2026-07-15 13:05:54.352] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:15:44Z", "value" => "morefun"} [2026-07-15 13:05:54.401] [DEBUG] QUERY OK db=48.5ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "morefun", "vendor", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407577, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.402] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:15:44Z", "value" => "kiosk_launcher"} [2026-07-15 13:05:54.450] [DEBUG] QUERY OK db=48.2ms queue=0.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "kiosk_launcher", "model", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407578, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.451] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:15:44Z", "value" => "1.0"} [2026-07-15 13:05:54.490] [DEBUG] QUERY OK db=39.1ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "1.0", "app_version", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407579, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.491] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:15:44Z", "value" => "13"} [2026-07-15 13:05:54.537] [DEBUG] QUERY OK db=44.9ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "13", "android_version", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407580, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.537] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "929"} [2026-07-15 13:05:54.575] [DEBUG] QUERY OK db=37.5ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "929", "ram_free_mb", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407581, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.579] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:15:44Z", "value" => "WIFI"} [2026-07-15 13:05:54.622] [DEBUG] QUERY OK db=42.3ms queue=0.4ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "WIFI", "network_type", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407582, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.622] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:15:44Z", "value" => "true"} [2026-07-15 13:05:54.668] [DEBUG] QUERY OK db=44.4ms queue=0.1ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "true", "kiosk_active", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407583, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.668] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:15:44Z", "value" => ""} [2026-07-15 13:05:54.721] [DEBUG] QUERY OK db=52.2ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:15:44Z", "sim_operator", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407584, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.722] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"} [2026-07-15 13:05:54.778] [DEBUG] QUERY OK db=55.1ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "UNKNOWN", "sim_number", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407585, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.778] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"} [2026-07-15 13:05:54.820] [DEBUG] QUERY OK db=41.7ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "UNKNOWN", "sim_iccid", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407586, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.820] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"} [2026-07-15 13:05:54.846] [DEBUG] QUERY OK db=24.7ms queue=0.1ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "UNKNOWN", "sim_imsi", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407587, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.846] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"} [2026-07-15 13:05:54.890] [DEBUG] QUERY OK db=43.8ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "UNKNOWN", "sim_iccid2", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407588, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.891] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:15:44Z", "value" => "UNKNOWN"} [2026-07-15 13:05:54.924] [DEBUG] QUERY OK db=32.4ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "UNKNOWN", "sim_imsi2", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407589, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.924] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "15"} [2026-07-15 13:05:54.960] [DEBUG] QUERY OK db=35.1ms queue=0.4ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "15", "data_usage_mb", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:54.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407590, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:54.961] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:15:44Z", "value" => "0"} [2026-07-15 13:05:55.006] [DEBUG] QUERY OK db=45.1ms queue=0.1ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "0", "mobile_data_mb", 47284, ~N[2026-07-15 13:05:54], ~N[2026-07-15 13:05:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:55.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407591, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:54], updated_at: ~N[2026-07-15 13:05:54]}} [2026-07-15 13:05:55.008] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:15:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:05:55.053] [DEBUG] QUERY OK db=44.8ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:15:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47284, ~N[2026-07-15 13:05:55], ~N[2026-07-15 13:05:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:05:55.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407592, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:15:44Z", message: nil, status_log_id: 47284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:05:55], updated_at: ~N[2026-07-15 13:05:55]}} [2026-07-15 13:05:55.056] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.4ms 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-15 13:05:55.065] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:05:55.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=12.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:05:55.073] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.6ms queue=0.9ms idle=14.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:06:24.222] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:06:24.223] [INFO ] Incoming JSON payload: {"oid":"8e28fc5e-82c1-40f7-a5bd-d81a4007caf9","sn":"98250623730001","uploadTime":"2026-07-15T04:16:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"ram_free_mb","value":"928","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:16:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:06:24.227] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8e28fc5e-82c1-40f7-a5bd-d81a4007caf9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:16:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:16:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:16:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:16:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "928"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:16:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:16:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:16:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:16:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:16:14Z", "vendor" => "morefun"} [2026-07-15 13:06:24.227] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:06:24.227] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:06:24.227] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:06:24.229] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=856.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-15 13:06:24.230] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=482.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-15 13:06:24.230] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:06:24.231] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:06:24.231] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:06:24.281] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:06:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:06:24.281] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:06:24.282] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:06:24.325] [DEBUG] QUERY OK source="tms_terminals" db=42.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:06:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:06:24.399] [DEBUG] QUERY OK db=73.2ms queue=0.1ms idle=43.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "8e28fc5e-82c1-40f7-a5bd-d81a4007caf9", "2026-07-15T04:16:14Z", ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:06:24.400] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47285, oid: "8e28fc5e-82c1-40f7-a5bd-d81a4007caf9", upload_time: "2026-07-15T04:16:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]} [2026-07-15 13:06:24.400] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:16:14Z", "value" => "morefun"} [2026-07-15 13:06:24.465] [DEBUG] QUERY OK db=64.8ms 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-15T04:16:14Z", "morefun", "vendor", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407593, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.466] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:16:14Z", "value" => "kiosk_launcher"} [2026-07-15 13:06:24.521] [DEBUG] QUERY OK db=54.0ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "kiosk_launcher", "model", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407594, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.522] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:16:14Z", "value" => "1.0"} [2026-07-15 13:06:24.590] [DEBUG] QUERY OK db=67.9ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "1.0", "app_version", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407595, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.591] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:16:14Z", "value" => "13"} [2026-07-15 13:06:24.630] [DEBUG] QUERY OK db=38.6ms queue=0.2ms idle=70.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "13", "android_version", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407596, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.631] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "928"} [2026-07-15 13:06:24.653] [DEBUG] QUERY OK db=22.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "928", "ram_free_mb", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407597, itemkey: "ram_free_mb", value: "928", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.654] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:16:14Z", "value" => "WIFI"} [2026-07-15 13:06:24.683] [DEBUG] QUERY OK db=27.8ms 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-15T04:16:14Z", "WIFI", "network_type", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407598, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.684] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:16:14Z", "value" => "true"} [2026-07-15 13:06:24.728] [DEBUG] QUERY OK db=43.4ms queue=0.1ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "true", "kiosk_active", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407599, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.729] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:16:14Z", "value" => ""} [2026-07-15 13:06:24.752] [DEBUG] QUERY OK db=23.4ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:16:14Z", "sim_operator", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407600, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.753] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"} [2026-07-15 13:06:24.786] [DEBUG] QUERY OK db=33.2ms queue=0.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "UNKNOWN", "sim_number", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407601, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.787] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"} [2026-07-15 13:06:24.821] [DEBUG] QUERY OK db=33.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "UNKNOWN", "sim_iccid", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407602, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.822] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"} [2026-07-15 13:06:24.843] [DEBUG] QUERY OK db=20.3ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "UNKNOWN", "sim_imsi", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407603, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.843] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"} [2026-07-15 13:06:24.898] [DEBUG] QUERY OK db=54.7ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "UNKNOWN", "sim_iccid2", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407604, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.899] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:16:14Z", "value" => "UNKNOWN"} [2026-07-15 13:06:24.929] [DEBUG] QUERY OK db=29.8ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "UNKNOWN", "sim_imsi2", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407605, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.930] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "15"} [2026-07-15 13:06:24.952] [DEBUG] QUERY OK db=22.4ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "15", "data_usage_mb", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:24.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407606, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:24.953] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:16:14Z", "value" => "0"} [2026-07-15 13:06:25.048] [DEBUG] QUERY OK db=94.5ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "0", "mobile_data_mb", 47285, ~N[2026-07-15 13:06:24], ~N[2026-07-15 13:06:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:25.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407607, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:24], updated_at: ~N[2026-07-15 13:06:24]}} [2026-07-15 13:06:25.050] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:16:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:06:25.096] [DEBUG] QUERY OK db=45.1ms idle=86.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47285, ~N[2026-07-15 13:06:25], ~N[2026-07-15 13:06:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:25.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407608, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:16:14Z", message: nil, status_log_id: 47285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:25], updated_at: ~N[2026-07-15 13:06:25]}} [2026-07-15 13:06:25.099] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:06:25.105] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 12:52:15]}, %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-15 13:06:25.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:06:25.112] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:06:54.216] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:06:54.216] [INFO ] Incoming JSON payload: {"oid":"56443d91-755b-4895-8e0c-dd825ee570f2","sn":"98250623730001","uploadTime":"2026-07-15T04:16:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:16:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:06:54.226] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "56443d91-755b-4895-8e0c-dd825ee570f2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:16:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:16:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:16:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:16:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:16:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:16:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:16:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:16:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:16:44Z", "vendor" => "morefun"} [2026-07-15 13:06:54.226] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:06:54.228] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:06:54.228] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:06:54.231] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=918.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-15 13:06:54.233] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.1ms idle=771.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-15 13:06:54.233] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:06:54.236] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:06:54.237] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:06:54.271] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:06:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:06:54.271] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:06:54.272] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=36.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:06:54.309] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:06:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:06:54.353] [DEBUG] QUERY OK db=41.3ms queue=1.9ms idle=37.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "56443d91-755b-4895-8e0c-dd825ee570f2", "2026-07-15T04:16:44Z", ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:06:54.353] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47286, oid: "56443d91-755b-4895-8e0c-dd825ee570f2", upload_time: "2026-07-15T04:16:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]} [2026-07-15 13:06:54.353] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:16:44Z", "value" => "morefun"} [2026-07-15 13:06:54.365] [DEBUG] QUERY OK db=11.5ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "morefun", "vendor", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407609, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.366] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:16:44Z", "value" => "kiosk_launcher"} [2026-07-15 13:06:54.410] [DEBUG] QUERY OK db=43.1ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "kiosk_launcher", "model", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407610, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.410] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:16:44Z", "value" => "1.0"} [2026-07-15 13:06:54.466] [DEBUG] QUERY OK db=55.3ms queue=0.4ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "1.0", "app_version", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407611, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.467] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:16:44Z", "value" => "13"} [2026-07-15 13:06:54.529] [DEBUG] QUERY OK db=61.6ms idle=5.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "13", "android_version", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407612, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.529] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "930"} [2026-07-15 13:06:54.590] [DEBUG] QUERY OK db=60.2ms queue=0.1ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "930", "ram_free_mb", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407613, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.590] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:16:44Z", "value" => "WIFI"} [2026-07-15 13:06:54.634] [DEBUG] QUERY OK db=43.0ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "WIFI", "network_type", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407614, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.634] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:16:44Z", "value" => "true"} [2026-07-15 13:06:54.663] [DEBUG] QUERY OK db=28.2ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "true", "kiosk_active", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407615, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.663] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:16:44Z", "value" => ""} [2026-07-15 13:06:54.708] [DEBUG] QUERY OK db=44.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:16:44Z", "sim_operator", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407616, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.708] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"} [2026-07-15 13:06:54.787] [DEBUG] QUERY OK db=78.0ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "UNKNOWN", "sim_number", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407617, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.787] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"} [2026-07-15 13:06:54.820] [DEBUG] QUERY OK db=32.5ms idle=79.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "UNKNOWN", "sim_iccid", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407618, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.821] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"} [2026-07-15 13:06:54.869] [DEBUG] QUERY OK db=47.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "UNKNOWN", "sim_imsi", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407619, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.869] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"} [2026-07-15 13:06:54.909] [DEBUG] QUERY OK db=39.7ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "UNKNOWN", "sim_iccid2", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407620, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.909] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:16:44Z", "value" => "UNKNOWN"} [2026-07-15 13:06:54.942] [DEBUG] QUERY OK db=31.9ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "UNKNOWN", "sim_imsi2", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407621, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.942] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "15"} [2026-07-15 13:06:54.965] [DEBUG] QUERY OK db=22.6ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "15", "data_usage_mb", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407622, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.966] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:16:44Z", "value" => "0"} [2026-07-15 13:06:54.995] [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-15T04:16:44Z", "0", "mobile_data_mb", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:54.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407623, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:54.995] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:16:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:06:55.055] [DEBUG] QUERY OK db=58.5ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:16:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47286, ~N[2026-07-15 13:06:54], ~N[2026-07-15 13:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:06:55.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407624, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:16:44Z", message: nil, status_log_id: 47286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:06:54], updated_at: ~N[2026-07-15 13:06:54]}} [2026-07-15 13:06:55.057] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=61.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-15 13:06:55.062] [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-07-15 13:06:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:06:55.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:06:55.069] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.1ms idle=10.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:07:24.458] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:07:24.458] [INFO ] Incoming JSON payload: {"oid":"c22ad417-44af-4c54-a324-24125269cfca","sn":"98250623730001","uploadTime":"2026-07-15T04:17:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:17:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:07:24.461] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c22ad417-44af-4c54-a324-24125269cfca", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:17:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:17:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:17:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:17:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:17:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:17:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:17:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:17:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:17:14Z", "vendor" => "morefun"} [2026-07-15 13:07:24.461] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:07:24.461] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:07:24.462] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:07:24.463] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=904.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-15 13:07:24.464] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=718.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-15 13:07:24.465] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:07:24.466] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:07:24.467] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:07:24.511] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms queue=0.5ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:07:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:07:24.511] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:07:24.513] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=45.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:07:24.556] [DEBUG] QUERY OK source="tms_terminals" db=42.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:07:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:07:24.591] [DEBUG] QUERY OK db=35.2ms idle=43.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "c22ad417-44af-4c54-a324-24125269cfca", "2026-07-15T04:17:14Z", ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:07:24.592] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47287, oid: "c22ad417-44af-4c54-a324-24125269cfca", upload_time: "2026-07-15T04:17:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]} [2026-07-15 13:07:24.592] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:17:14Z", "value" => "morefun"} [2026-07-15 13:07:24.627] [DEBUG] QUERY OK db=34.8ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "morefun", "vendor", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407625, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:17:14Z", "value" => "kiosk_launcher"} [2026-07-15 13:07:24.648] [DEBUG] QUERY OK db=20.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "kiosk_launcher", "model", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407626, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.648] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:17:14Z", "value" => "1.0"} [2026-07-15 13:07:24.690] [DEBUG] QUERY OK db=41.7ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "1.0", "app_version", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407627, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.691] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:17:14Z", "value" => "13"} [2026-07-15 13:07:24.737] [DEBUG] QUERY OK db=45.3ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "13", "android_version", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407628, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.737] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "930"} [2026-07-15 13:07:24.762] [DEBUG] QUERY OK db=24.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "930", "ram_free_mb", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407629, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.763] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:17:14Z", "value" => "WIFI"} [2026-07-15 13:07:24.801] [DEBUG] QUERY OK db=38.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "WIFI", "network_type", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407630, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.802] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:17:14Z", "value" => "true"} [2026-07-15 13:07:24.822] [DEBUG] QUERY OK db=19.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "true", "kiosk_active", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407631, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.823] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:17:14Z", "value" => ""} [2026-07-15 13:07:24.867] [DEBUG] QUERY OK db=43.8ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:17:14Z", "sim_operator", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407632, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.868] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"} [2026-07-15 13:07:24.888] [DEBUG] QUERY OK db=19.8ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "UNKNOWN", "sim_number", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407633, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.888] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"} [2026-07-15 13:07:24.920] [DEBUG] QUERY OK db=31.5ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "UNKNOWN", "sim_iccid", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407634, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.921] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"} [2026-07-15 13:07:24.959] [DEBUG] QUERY OK db=37.5ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "UNKNOWN", "sim_imsi", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407635, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.960] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"} [2026-07-15 13:07:24.987] [DEBUG] QUERY OK db=26.8ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "UNKNOWN", "sim_iccid2", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:24.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407636, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:24.987] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:17:14Z", "value" => "UNKNOWN"} [2026-07-15 13:07:25.014] [DEBUG] QUERY OK db=26.3ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "UNKNOWN", "sim_imsi2", 47287, ~N[2026-07-15 13:07:24], ~N[2026-07-15 13:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:25.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407637, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:24], updated_at: ~N[2026-07-15 13:07:24]}} [2026-07-15 13:07:25.014] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "15"} [2026-07-15 13:07:25.040] [DEBUG] QUERY OK db=25.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "15", "data_usage_mb", 47287, ~N[2026-07-15 13:07:25], ~N[2026-07-15 13:07:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:25.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407638, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:25], updated_at: ~N[2026-07-15 13:07:25]}} [2026-07-15 13:07:25.040] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:17:14Z", "value" => "0"} [2026-07-15 13:07:25.076] [DEBUG] QUERY OK db=34.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "0", "mobile_data_mb", 47287, ~N[2026-07-15 13:07:25], ~N[2026-07-15 13:07:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:25.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407639, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:25], updated_at: ~N[2026-07-15 13:07:25]}} [2026-07-15 13:07:25.077] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:17:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:07:25.101] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47287, ~N[2026-07-15 13:07:25], ~N[2026-07-15 13:07:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:25.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407640, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:17:14Z", message: nil, status_log_id: 47287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:25], updated_at: ~N[2026-07-15 13:07:25]}} [2026-07-15 13:07:25.104] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=27.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:07:25.108] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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-07-15 13:06:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:07:25.112] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:07:25.115] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.9ms idle=8.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:07:54.740] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:07:54.740] [INFO ] Incoming JSON payload: {"oid":"0084d4a6-1df1-4fa0-81f1-288495edfe9f","sn":"98250623730001","uploadTime":"2026-07-15T04:17:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:17:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:07:54.742] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0084d4a6-1df1-4fa0-81f1-288495edfe9f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:17:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:17:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:17:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:17:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:17:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:17:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:17:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:17:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:17:44Z", "vendor" => "morefun"} [2026-07-15 13:07:54.742] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:07:54.742] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:07:54.742] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:07:54.743] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=995.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-15 13:07:54.744] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=107.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-15 13:07:54.744] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:07:54.746] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:07:54.746] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:07:54.777] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:07:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:07:54.778] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:07:54.779] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=31.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:07:54.801] [DEBUG] QUERY OK source="tms_terminals" db=21.7ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:07:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:07:54.825] [DEBUG] QUERY OK db=23.6ms idle=22.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "0084d4a6-1df1-4fa0-81f1-288495edfe9f", "2026-07-15T04:17:44Z", ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:07:54.826] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47288, oid: "0084d4a6-1df1-4fa0-81f1-288495edfe9f", upload_time: "2026-07-15T04:17:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]} [2026-07-15 13:07:54.826] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:17:44Z", "value" => "morefun"} [2026-07-15 13:07:54.877] [DEBUG] QUERY OK db=50.2ms queue=0.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "morefun", "vendor", 47288, ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:54.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407641, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]}} [2026-07-15 13:07:54.878] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:17:44Z", "value" => "kiosk_launcher"} [2026-07-15 13:07:54.900] [DEBUG] QUERY OK db=21.0ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "kiosk_launcher", "model", 47288, ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:54.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407642, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]}} [2026-07-15 13:07:54.900] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:17:44Z", "value" => "1.0"} [2026-07-15 13:07:54.924] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "1.0", "app_version", 47288, ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:54.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407643, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]}} [2026-07-15 13:07:54.925] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:17:44Z", "value" => "13"} [2026-07-15 13:07:54.973] [DEBUG] QUERY OK db=47.5ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "13", "android_version", 47288, ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:54.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407644, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]}} [2026-07-15 13:07:54.973] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "929"} [2026-07-15 13:07:55.012] [DEBUG] QUERY OK db=38.3ms queue=0.1ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "929", "ram_free_mb", 47288, ~N[2026-07-15 13:07:54], ~N[2026-07-15 13:07:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407645, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:54], updated_at: ~N[2026-07-15 13:07:54]}} [2026-07-15 13:07:55.013] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:17:44Z", "value" => "WIFI"} [2026-07-15 13:07:55.037] [DEBUG] QUERY OK db=23.3ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "WIFI", "network_type", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407646, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.037] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:17:44Z", "value" => "true"} [2026-07-15 13:07:55.078] [DEBUG] QUERY OK db=39.8ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "true", "kiosk_active", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407647, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.078] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:17:44Z", "value" => ""} [2026-07-15 13:07:55.104] [DEBUG] QUERY OK db=25.5ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:17:44Z", "sim_operator", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407648, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.106] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"} [2026-07-15 13:07:55.140] [DEBUG] QUERY OK db=33.1ms queue=0.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "UNKNOWN", "sim_number", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407649, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.140] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"} [2026-07-15 13:07:55.185] [DEBUG] QUERY OK db=44.6ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "UNKNOWN", "sim_iccid", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407650, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.186] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"} [2026-07-15 13:07:55.211] [DEBUG] QUERY OK db=25.2ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "UNKNOWN", "sim_imsi", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407651, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.212] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"} [2026-07-15 13:07:55.238] [DEBUG] QUERY OK db=24.9ms queue=0.1ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "UNKNOWN", "sim_iccid2", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407652, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.238] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:17:44Z", "value" => "UNKNOWN"} [2026-07-15 13:07:55.287] [DEBUG] QUERY OK db=47.4ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "UNKNOWN", "sim_imsi2", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407653, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.288] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "15"} [2026-07-15 13:07:55.312] [DEBUG] QUERY OK db=24.1ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "15", "data_usage_mb", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407654, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.313] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:17:44Z", "value" => "0"} [2026-07-15 13:07:55.354] [DEBUG] QUERY OK db=39.8ms queue=0.1ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "0", "mobile_data_mb", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407655, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.355] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:17:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:07:55.389] [DEBUG] QUERY OK db=32.3ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:17:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47288, ~N[2026-07-15 13:07:55], ~N[2026-07-15 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:07:55.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407656, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:17:44Z", message: nil, status_log_id: 47288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:07:55], updated_at: ~N[2026-07-15 13:07:55]}} [2026-07-15 13:07:55.392] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:07:55.400] [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-07-15 13:06:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:07:55.407] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=13.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:07:55.411] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=2.2ms idle=15.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:08:24.636] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:08:24.636] [INFO ] Incoming JSON payload: {"oid":"b8bbd9af-f4c5-4c94-a3c0-bf5833dda20e","sn":"98250623730001","uploadTime":"2026-07-15T04:18:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:18:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:08:24.638] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b8bbd9af-f4c5-4c94-a3c0-bf5833dda20e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:18:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:18:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:18:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:18:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:18:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:18:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:18:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:18:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:18:14Z", "vendor" => "morefun"} [2026-07-15 13:08:24.639] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:08:24.639] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:08:24.639] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:08:24.640] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=905.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-15 13:08:24.641] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=892.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-15 13:08:24.641] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:08:24.644] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:08:24.645] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:08:24.668] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:08:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:08:24.668] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:08:24.670] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:08:24.694] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:08:24.706] [DEBUG] QUERY OK db=12.0ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b8bbd9af-f4c5-4c94-a3c0-bf5833dda20e", "2026-07-15T04:18:14Z", ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:08:24.706] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47289, oid: "b8bbd9af-f4c5-4c94-a3c0-bf5833dda20e", upload_time: "2026-07-15T04:18:14Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]} [2026-07-15 13:08:24.707] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:18:14Z", "value" => "morefun"} [2026-07-15 13:08:24.733] [DEBUG] QUERY OK db=26.2ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "morefun", "vendor", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407657, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.733] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:18:14Z", "value" => "kiosk_launcher"} [2026-07-15 13:08:24.757] [DEBUG] QUERY OK db=22.6ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "kiosk_launcher", "model", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407658, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.757] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:18:14Z", "value" => "1.0"} [2026-07-15 13:08:24.780] [DEBUG] QUERY OK db=22.6ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "1.0", "app_version", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407659, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.780] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:18:14Z", "value" => "13"} [2026-07-15 13:08:24.799] [DEBUG] QUERY OK db=18.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "13", "android_version", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407660, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.799] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "929"} [2026-07-15 13:08:24.822] [DEBUG] QUERY OK db=22.0ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "929", "ram_free_mb", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407661, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.822] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:18:14Z", "value" => "WIFI"} [2026-07-15 13:08:24.843] [DEBUG] QUERY OK db=20.0ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "WIFI", "network_type", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407662, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.843] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:18:14Z", "value" => "true"} [2026-07-15 13:08:24.872] [DEBUG] QUERY OK db=27.9ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "true", "kiosk_active", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407663, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.872] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:18:14Z", "value" => ""} [2026-07-15 13:08:24.904] [DEBUG] QUERY OK db=31.8ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:18:14Z", "sim_operator", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407664, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.905] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"} [2026-07-15 13:08:24.930] [DEBUG] QUERY OK db=24.8ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "UNKNOWN", "sim_number", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407665, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.931] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"} [2026-07-15 13:08:24.951] [DEBUG] QUERY OK db=19.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "UNKNOWN", "sim_iccid", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407666, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.951] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"} [2026-07-15 13:08:24.993] [DEBUG] QUERY OK db=41.0ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "UNKNOWN", "sim_imsi", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:24.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407667, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:24.994] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"} [2026-07-15 13:08:25.017] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "UNKNOWN", "sim_iccid2", 47289, ~N[2026-07-15 13:08:24], ~N[2026-07-15 13:08:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:25.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407668, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:24], updated_at: ~N[2026-07-15 13:08:24]}} [2026-07-15 13:08:25.018] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:18:14Z", "value" => "UNKNOWN"} [2026-07-15 13:08:25.034] [DEBUG] QUERY OK db=14.8ms queue=0.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "UNKNOWN", "sim_imsi2", 47289, ~N[2026-07-15 13:08:25], ~N[2026-07-15 13:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:25.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407669, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:25], updated_at: ~N[2026-07-15 13:08:25]}} [2026-07-15 13:08:25.034] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "15"} [2026-07-15 13:08:25.101] [DEBUG] QUERY OK db=66.4ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "15", "data_usage_mb", 47289, ~N[2026-07-15 13:08:25], ~N[2026-07-15 13:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:25.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407670, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:25], updated_at: ~N[2026-07-15 13:08:25]}} [2026-07-15 13:08:25.102] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:18:14Z", "value" => "0"} [2026-07-15 13:08:25.137] [DEBUG] QUERY OK db=34.5ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "0", "mobile_data_mb", 47289, ~N[2026-07-15 13:08:25], ~N[2026-07-15 13:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:25.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407671, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:25], updated_at: ~N[2026-07-15 13:08:25]}} [2026-07-15 13:08:25.138] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:18:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:08:25.193] [DEBUG] QUERY OK db=54.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47289, ~N[2026-07-15 13:08:25], ~N[2026-07-15 13:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:25.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407672, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:18:14Z", message: nil, status_log_id: 47289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:25], updated_at: ~N[2026-07-15 13:08:25]}} [2026-07-15 13:08:25.195] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=56.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-15 13:08:25.200] [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-07-15 13:06:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:08:25.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:08:25.207] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.5ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:08:53.718] [INFO ] Running offline device check... [2026-07-15 13:08:53.718] [INFO ] Starting offline device check... [2026-07-15 13:08:53.720] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=968.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 13:08:53.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=905.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:08:53.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.757] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms queue=0.3ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:53], 2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:08:53.757] [INFO ] Terminal 61250424798001 back online [2026-07-15 13:08:53.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=27.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:08:53.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.765] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.803] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:53], 11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:08:53.803] [INFO ] Terminal 61251020798002 back online [2026-07-15 13:08:53.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=32.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.858] [DEBUG] QUERY OK source="tms_terminals" db=40.6ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:53], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:08:53.859] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 13:08:53.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=41.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:08:53.861] [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-15 13:08:53.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=14.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.881] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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-15 13:08:53.910] [DEBUG] QUERY OK source="tms_terminals" db=16.6ms idle=12.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:53], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:08:53.910] [INFO ] Terminal 98251226730001 back online [2026-07-15 13:08:53.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=18.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.912] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-15 13:08:53.922] [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-15 13:08:53.923] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.929] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.937] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.938] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:08:53.938] [INFO ] Offline device check completed. Found 37 offline devices, updated 4 statuses. [2026-07-15 13:08:53.938] [INFO ] Offline device check completed successfully [2026-07-15 13:08:55.060] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:08:55.060] [INFO ] Incoming JSON payload: {"oid":"6e8f672d-1b5c-4823-bda3-6bca31a34f65","sn":"98250623730001","uploadTime":"2026-07-15T04:18:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"ram_free_mb","value":"936","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:18:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:08:55.061] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6e8f672d-1b5c-4823-bda3-6bca31a34f65", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:18:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:18:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:18:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:18:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "936"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:18:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:18:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:18:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:18:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:18:44Z", "vendor" => "morefun"} [2026-07-15 13:08:55.061] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:08:55.061] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:08:55.061] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:08:55.062] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1123.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-15 13:08:55.063] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=242.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-15 13:08:55.063] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:08:55.064] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:08:55.065] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:08:55.089] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms queue=0.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:08:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:08:55.089] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:08:55.091] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:08:55.122] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:08:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:08:55.151] [DEBUG] QUERY OK db=28.5ms idle=31.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "6e8f672d-1b5c-4823-bda3-6bca31a34f65", "2026-07-15T04:18:44Z", ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:08:55.152] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47290, oid: "6e8f672d-1b5c-4823-bda3-6bca31a34f65", upload_time: "2026-07-15T04:18:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]} [2026-07-15 13:08:55.152] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:18:44Z", "value" => "morefun"} [2026-07-15 13:08:55.185] [DEBUG] QUERY OK db=33.2ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "morefun", "vendor", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407673, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.186] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:18:44Z", "value" => "kiosk_launcher"} [2026-07-15 13:08:55.198] [DEBUG] QUERY OK db=11.5ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "kiosk_launcher", "model", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407674, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.198] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:18:44Z", "value" => "1.0"} [2026-07-15 13:08:55.279] [DEBUG] QUERY OK db=79.9ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "1.0", "app_version", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407675, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.279] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:18:44Z", "value" => "13"} [2026-07-15 13:08:55.317] [DEBUG] QUERY OK db=37.5ms idle=81.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "13", "android_version", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407676, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.317] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "936"} [2026-07-15 13:08:55.341] [DEBUG] QUERY OK db=22.9ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "936", "ram_free_mb", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407677, itemkey: "ram_free_mb", value: "936", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.341] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:18:44Z", "value" => "WIFI"} [2026-07-15 13:08:55.370] [DEBUG] QUERY OK db=27.9ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "WIFI", "network_type", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407678, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.370] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:18:44Z", "value" => "true"} [2026-07-15 13:08:55.405] [DEBUG] QUERY OK db=34.3ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "true", "kiosk_active", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407679, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.405] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:18:44Z", "value" => ""} [2026-07-15 13:08:55.420] [DEBUG] QUERY OK db=14.0ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:18:44Z", "sim_operator", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407680, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.420] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"} [2026-07-15 13:08:55.444] [DEBUG] QUERY OK db=23.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "UNKNOWN", "sim_number", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407681, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.445] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"} [2026-07-15 13:08:55.478] [DEBUG] QUERY OK db=33.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "UNKNOWN", "sim_iccid", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407682, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.479] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"} [2026-07-15 13:08:55.510] [DEBUG] QUERY OK db=31.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "UNKNOWN", "sim_imsi", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407683, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"} [2026-07-15 13:08:55.534] [DEBUG] QUERY OK db=22.9ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "UNKNOWN", "sim_iccid2", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407684, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.535] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:18:44Z", "value" => "UNKNOWN"} [2026-07-15 13:08:55.567] [DEBUG] QUERY OK db=32.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "UNKNOWN", "sim_imsi2", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407685, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.568] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "15"} [2026-07-15 13:08:55.591] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "15", "data_usage_mb", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407686, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.592] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:18:44Z", "value" => "0"} [2026-07-15 13:08:55.642] [DEBUG] QUERY OK db=45.1ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "0", "mobile_data_mb", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407687, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.644] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:18:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:08:55.660] [DEBUG] QUERY OK db=15.2ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:18:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47290, ~N[2026-07-15 13:08:55], ~N[2026-07-15 13:08:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:08:55.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407688, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:18:44Z", message: nil, status_log_id: 47290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:08:55], updated_at: ~N[2026-07-15 13:08:55]}} [2026-07-15 13:08:55.666] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=21.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:08:55.672] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:08:53]}, %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-15 13:08:55.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:08:55.682] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.7ms idle=14.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:09:25.265] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:09:25.265] [INFO ] Incoming JSON payload: {"oid":"df334297-4f00-483f-9552-c9f768e9b998","sn":"98250623730001","uploadTime":"2026-07-15T04:19:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:19:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:09:25.267] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "df334297-4f00-483f-9552-c9f768e9b998", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:19:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:19:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:19:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:19:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:19:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:19:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:19:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:19:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:19:15Z", "vendor" => "morefun"} [2026-07-15 13:09:25.267] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:09:25.268] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:09:25.269] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:09:25.271] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=517.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-15 13:09:25.276] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=359.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-15 13:09:25.277] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:09:25.278] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:09:25.278] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:09:25.332] [DEBUG] QUERY OK source="tms_terminals" db=52.5ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:09:25], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:09:25.333] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:09:25.334] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=55.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:09:25.389] [DEBUG] QUERY OK source="tms_terminals" db=54.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:09:25], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:09:25.437] [DEBUG] QUERY OK db=47.4ms idle=55.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "df334297-4f00-483f-9552-c9f768e9b998", "2026-07-15T04:19:15Z", ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:09:25.437] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47291, oid: "df334297-4f00-483f-9552-c9f768e9b998", upload_time: "2026-07-15T04:19:15Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]} [2026-07-15 13:09:25.438] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:19:15Z", "value" => "morefun"} [2026-07-15 13:09:25.472] [DEBUG] QUERY OK db=33.3ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "morefun", "vendor", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407689, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.472] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:19:15Z", "value" => "kiosk_launcher"} [2026-07-15 13:09:25.515] [DEBUG] QUERY OK db=43.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "kiosk_launcher", "model", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407690, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.516] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:19:15Z", "value" => "1.0"} [2026-07-15 13:09:25.566] [DEBUG] QUERY OK db=49.9ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "1.0", "app_version", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407691, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.566] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:19:15Z", "value" => "13"} [2026-07-15 13:09:25.591] [DEBUG] QUERY OK db=24.2ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "13", "android_version", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407692, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.592] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "933"} [2026-07-15 13:09:25.636] [DEBUG] QUERY OK db=43.9ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "933", "ram_free_mb", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407693, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.636] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:19:15Z", "value" => "WIFI"} [2026-07-15 13:09:25.660] [DEBUG] QUERY OK db=23.5ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "WIFI", "network_type", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407694, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.660] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:19:15Z", "value" => "true"} [2026-07-15 13:09:25.695] [DEBUG] QUERY OK db=34.3ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "true", "kiosk_active", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407695, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.696] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:19:15Z", "value" => ""} [2026-07-15 13:09:25.719] [DEBUG] QUERY OK db=22.9ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:19:15Z", "sim_operator", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407696, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.720] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"} [2026-07-15 13:09:25.780] [DEBUG] QUERY OK db=59.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "UNKNOWN", "sim_number", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407697, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.780] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"} [2026-07-15 13:09:25.840] [DEBUG] QUERY OK db=59.8ms queue=0.1ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "UNKNOWN", "sim_iccid", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407698, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.841] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"} [2026-07-15 13:09:25.874] [DEBUG] QUERY OK db=28.5ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "UNKNOWN", "sim_imsi", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407699, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.874] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"} [2026-07-15 13:09:25.933] [DEBUG] QUERY OK db=57.6ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "UNKNOWN", "sim_iccid2", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407700, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.934] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:19:15Z", "value" => "UNKNOWN"} [2026-07-15 13:09:25.955] [DEBUG] QUERY OK db=20.9ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "UNKNOWN", "sim_imsi2", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407701, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.956] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "15"} [2026-07-15 13:09:25.981] [DEBUG] QUERY OK db=24.8ms queue=0.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "15", "data_usage_mb", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407702, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.982] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:19:15Z", "value" => "0"} [2026-07-15 13:09:25.995] [DEBUG] QUERY OK db=12.1ms queue=0.4ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "0", "mobile_data_mb", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:25.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407703, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:25.995] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:19:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:09:26.046] [DEBUG] QUERY OK db=49.4ms queue=0.2ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47291, ~N[2026-07-15 13:09:25], ~N[2026-07-15 13:09:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:26.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407704, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:19:15Z", message: nil, status_log_id: 47291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:25], updated_at: ~N[2026-07-15 13:09:25]}} [2026-07-15 13:09:26.049] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=53.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:09:26.056] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:08:53]}, %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-15 13:09:26.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=0.2ms idle=11.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:09:26.064] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.4ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:09:55.264] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:09:55.264] [INFO ] Incoming JSON payload: {"oid":"246e4410-ed27-4bf3-b627-dc30ee71d5c1","sn":"98250623730001","uploadTime":"2026-07-15T04:19:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:19:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:09:55.265] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "246e4410-ed27-4bf3-b627-dc30ee71d5c1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:19:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:19:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:19:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:19:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:19:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:19:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:19:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:19:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:19:45Z", "vendor" => "morefun"} [2026-07-15 13:09:55.265] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:09:55.265] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:09:55.265] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:09:55.266] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1276.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-15 13:09:55.268] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=276.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-15 13:09:55.268] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:09:55.270] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.3ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:09:55.270] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:09:55.303] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:09:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:09:55.303] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:09:55.304] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:09:55.362] [DEBUG] QUERY OK source="tms_terminals" db=57.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:09:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:09:55.410] [DEBUG] QUERY OK db=47.1ms idle=58.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "246e4410-ed27-4bf3-b627-dc30ee71d5c1", "2026-07-15T04:19:45Z", ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:09:55.410] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47292, oid: "246e4410-ed27-4bf3-b627-dc30ee71d5c1", upload_time: "2026-07-15T04:19:45Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]} [2026-07-15 13:09:55.410] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:19:45Z", "value" => "morefun"} [2026-07-15 13:09:55.458] [DEBUG] QUERY OK db=47.5ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "morefun", "vendor", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407705, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.458] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:19:45Z", "value" => "kiosk_launcher"} [2026-07-15 13:09:55.504] [DEBUG] QUERY OK db=45.5ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "kiosk_launcher", "model", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407706, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.505] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:19:45Z", "value" => "1.0"} [2026-07-15 13:09:55.535] [DEBUG] QUERY OK db=29.1ms queue=0.2ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "1.0", "app_version", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407707, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.535] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:19:45Z", "value" => "13"} [2026-07-15 13:09:55.565] [DEBUG] QUERY OK db=28.4ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "13", "android_version", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407708, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.566] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "932"} [2026-07-15 13:09:55.601] [DEBUG] QUERY OK db=33.5ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "932", "ram_free_mb", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407709, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.602] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:19:45Z", "value" => "WIFI"} [2026-07-15 13:09:55.625] [DEBUG] QUERY OK db=22.9ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "WIFI", "network_type", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407710, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.626] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:19:45Z", "value" => "true"} [2026-07-15 13:09:55.660] [DEBUG] QUERY OK db=34.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "true", "kiosk_active", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407711, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.661] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:19:45Z", "value" => ""} [2026-07-15 13:09:55.695] [DEBUG] QUERY OK db=33.7ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:19:45Z", "sim_operator", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407712, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.695] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"} [2026-07-15 13:09:55.719] [DEBUG] QUERY OK db=22.8ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "UNKNOWN", "sim_number", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407713, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.720] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"} [2026-07-15 13:09:55.765] [DEBUG] QUERY OK db=43.9ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "UNKNOWN", "sim_iccid", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407714, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.765] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"} [2026-07-15 13:09:55.799] [DEBUG] QUERY OK db=33.2ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "UNKNOWN", "sim_imsi", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407715, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.799] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"} [2026-07-15 13:09:55.834] [DEBUG] QUERY OK db=34.2ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "UNKNOWN", "sim_iccid2", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407716, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.835] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:19:45Z", "value" => "UNKNOWN"} [2026-07-15 13:09:55.855] [DEBUG] QUERY OK db=20.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "UNKNOWN", "sim_imsi2", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407717, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.856] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "15"} [2026-07-15 13:09:55.889] [DEBUG] QUERY OK db=32.9ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "15", "data_usage_mb", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407718, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.889] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:19:45Z", "value" => "0"} [2026-07-15 13:09:55.925] [DEBUG] QUERY OK db=35.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "0", "mobile_data_mb", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407719, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.926] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:19:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:09:55.970] [DEBUG] QUERY OK db=43.3ms queue=0.3ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:19:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47292, ~N[2026-07-15 13:09:55], ~N[2026-07-15 13:09:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:09:55.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407720, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:19:45Z", message: nil, status_log_id: 47292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:09:55], updated_at: ~N[2026-07-15 13:09:55]}} [2026-07-15 13:09:55.973] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=46.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-15 13:09:55.977] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:08:53]}, %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-15 13:09:55.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=7.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:09:55.983] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:11:14.183] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:11:14.183] [INFO ] Incoming JSON payload: {"oid":"a966f439-a2d1-424e-b3aa-940954720e23","sn":"98250623730001","uploadTime":"2026-07-15T04:21:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:21:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:11:14.184] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a966f439-a2d1-424e-b3aa-940954720e23", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:21:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:21:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:21:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:21:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:21:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:21:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:21:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:21:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:21:04Z", "vendor" => "morefun"} [2026-07-15 13:11:14.184] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:11:14.184] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:11:14.184] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:11:14.185] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=934.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-15 13:11:14.186] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=416.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-15 13:11:14.186] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:11:14.188] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:11:14.188] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:11:14.217] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:11:14], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:11:14.217] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:11:14.219] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=30.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:11:14.245] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:11:14], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:11:14.281] [DEBUG] QUERY OK db=35.9ms idle=26.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "a966f439-a2d1-424e-b3aa-940954720e23", "2026-07-15T04:21:04Z", ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:11:14.282] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47293, oid: "a966f439-a2d1-424e-b3aa-940954720e23", upload_time: "2026-07-15T04:21:04Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]} [2026-07-15 13:11:14.282] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:21:04Z", "value" => "morefun"} [2026-07-15 13:11:14.308] [DEBUG] QUERY OK db=26.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "morefun", "vendor", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407721, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.309] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:21:04Z", "value" => "kiosk_launcher"} [2026-07-15 13:11:14.338] [DEBUG] QUERY OK db=28.4ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "kiosk_launcher", "model", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407722, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.338] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:21:04Z", "value" => "1.0"} [2026-07-15 13:11:14.357] [DEBUG] QUERY OK db=17.5ms queue=0.8ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "1.0", "app_version", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407723, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.358] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:21:04Z", "value" => "13"} [2026-07-15 13:11:14.401] [DEBUG] QUERY OK db=42.8ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "13", "android_version", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407724, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.401] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "933"} [2026-07-15 13:11:14.425] [DEBUG] QUERY OK db=23.4ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "933", "ram_free_mb", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407725, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.426] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:21:04Z", "value" => "WIFI"} [2026-07-15 13:11:14.464] [DEBUG] QUERY OK db=37.3ms queue=0.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "WIFI", "network_type", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407726, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.464] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:21:04Z", "value" => "true"} [2026-07-15 13:11:14.499] [DEBUG] QUERY OK db=34.6ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "true", "kiosk_active", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407727, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.500] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:21:04Z", "value" => ""} [2026-07-15 13:11:14.527] [DEBUG] QUERY OK db=26.8ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:21:04Z", "sim_operator", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407728, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.527] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"} [2026-07-15 13:11:14.555] [DEBUG] QUERY OK db=27.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-15T04:21:04Z", "UNKNOWN", "sim_number", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407729, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.555] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"} [2026-07-15 13:11:14.576] [DEBUG] QUERY OK db=20.5ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "UNKNOWN", "sim_iccid", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407730, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.576] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"} [2026-07-15 13:11:14.603] [DEBUG] QUERY OK db=26.7ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "UNKNOWN", "sim_imsi", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407731, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.604] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"} [2026-07-15 13:11:14.635] [DEBUG] QUERY OK db=31.1ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "UNKNOWN", "sim_iccid2", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407732, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.636] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:21:04Z", "value" => "UNKNOWN"} [2026-07-15 13:11:14.662] [DEBUG] QUERY OK db=26.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "UNKNOWN", "sim_imsi2", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407733, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.663] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "15"} [2026-07-15 13:11:14.702] [DEBUG] QUERY OK db=37.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "15", "data_usage_mb", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407734, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.702] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:21:04Z", "value" => "0"} [2026-07-15 13:11:14.734] [DEBUG] QUERY OK db=31.7ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "0", "mobile_data_mb", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407735, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.735] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:21:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:11:14.798] [DEBUG] QUERY OK db=61.6ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47293, ~N[2026-07-15 13:11:14], ~N[2026-07-15 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:14.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407736, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:21:04Z", message: nil, status_log_id: 47293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:14], updated_at: ~N[2026-07-15 13:11:14]}} [2026-07-15 13:11:14.800] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=65.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-15 13:11:14.805] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:08:53]}, %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-15 13:11:14.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:11:14.813] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.6ms idle=11.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:11:53.046] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:11:53.046] [INFO ] Incoming JSON payload: {"oid":"db1d6304-0ce3-4580-aecb-d4aaaaea0035","sn":"98250623730001","uploadTime":"2026-07-15T04:21:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:21:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:11:53.047] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "db1d6304-0ce3-4580-aecb-d4aaaaea0035", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:21:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:21:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:21:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:21:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:21:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:21:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:21:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:21:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:21:42Z", "vendor" => "morefun"} [2026-07-15 13:11:53.047] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:11:53.047] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:11:53.047] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:11:53.049] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=682.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-15 13:11:53.049] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=277.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-15 13:11:53.050] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:11:53.051] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:11:53.052] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:11:53.169] [DEBUG] QUERY OK source="tms_terminals" db=116.9ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:11:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:11:53.170] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:11:53.171] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=118.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:11:53.216] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms queue=0.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:11:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:11:53.250] [DEBUG] QUERY OK db=33.7ms queue=0.1ms idle=45.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "db1d6304-0ce3-4580-aecb-d4aaaaea0035", "2026-07-15T04:21:42Z", ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:11:53.250] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47294, oid: "db1d6304-0ce3-4580-aecb-d4aaaaea0035", upload_time: "2026-07-15T04:21:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]} [2026-07-15 13:11:53.251] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:21:42Z", "value" => "morefun"} [2026-07-15 13:11:53.299] [DEBUG] QUERY OK db=47.5ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "morefun", "vendor", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407737, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.300] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:21:42Z", "value" => "kiosk_launcher"} [2026-07-15 13:11:53.337] [DEBUG] QUERY OK db=36.9ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "kiosk_launcher", "model", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407738, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.337] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:21:42Z", "value" => "1.0"} [2026-07-15 13:11:53.384] [DEBUG] QUERY OK db=46.7ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "1.0", "app_version", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407739, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.385] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:21:42Z", "value" => "13"} [2026-07-15 13:11:53.414] [DEBUG] QUERY OK db=28.5ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "13", "android_version", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407740, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.414] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "933"} [2026-07-15 13:11:53.459] [DEBUG] QUERY OK db=44.3ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "933", "ram_free_mb", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407741, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.460] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:21:42Z", "value" => "WIFI"} [2026-07-15 13:11:53.493] [DEBUG] QUERY OK db=32.6ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "WIFI", "network_type", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407742, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.493] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:21:42Z", "value" => "true"} [2026-07-15 13:11:53.546] [DEBUG] QUERY OK db=52.6ms 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-15T04:21:42Z", "true", "kiosk_active", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407743, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.547] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:21:42Z", "value" => ""} [2026-07-15 13:11:53.574] [DEBUG] QUERY OK db=26.7ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:21:42Z", "sim_operator", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407744, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.575] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"} [2026-07-15 13:11:53.616] [DEBUG] QUERY OK db=41.0ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "UNKNOWN", "sim_number", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407745, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.616] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"} [2026-07-15 13:11:53.645] [DEBUG] QUERY OK db=28.3ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "UNKNOWN", "sim_iccid", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407746, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.646] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"} [2026-07-15 13:11:53.680] [DEBUG] QUERY OK db=32.9ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "UNKNOWN", "sim_imsi", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407747, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.680] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"} [2026-07-15 13:11:53.711] [DEBUG] QUERY OK db=31.1ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "UNKNOWN", "sim_iccid2", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407748, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.712] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:21:42Z", "value" => "UNKNOWN"} [2026-07-15 13:11:53.735] [DEBUG] QUERY OK db=22.5ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "UNKNOWN", "sim_imsi2", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407749, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.735] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "15"} [2026-07-15 13:11:53.757] [DEBUG] QUERY OK db=21.8ms 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-15T04:21:42Z", "15", "data_usage_mb", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407750, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.758] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:21:42Z", "value" => "0"} [2026-07-15 13:11:53.781] [DEBUG] QUERY OK db=22.0ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "0", "mobile_data_mb", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407751, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.782] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:21:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:11:53.815] [DEBUG] QUERY OK db=31.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:21:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47294, ~N[2026-07-15 13:11:53], ~N[2026-07-15 13:11:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:11:53.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407752, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:21:42Z", message: nil, status_log_id: 47294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:11:53], updated_at: ~N[2026-07-15 13:11:53]}} [2026-07-15 13:11:53.819] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=36.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:11:53.825] [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-07-15 13:11:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:11:53.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=10.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:11:53.832] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.5ms idle=12.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:23.137] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:12:23.137] [INFO ] Incoming JSON payload: {"oid":"58671c15-0bd2-4b69-8acd-01749e9b876b","sn":"98250623730001","uploadTime":"2026-07-15T04:22:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:22:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:12:23.139] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "58671c15-0bd2-4b69-8acd-01749e9b876b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:22:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:22:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:22:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:22:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:22:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:22:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:22:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:22:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:22:13Z", "vendor" => "morefun"} [2026-07-15 13:12:23.139] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:12:23.139] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:12:23.139] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:12:23.140] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1366.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-15 13:12:23.141] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=669.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-15 13:12:23.141] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:12:23.143] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:12:23.143] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:12:23.739] [DEBUG] QUERY OK source="tms_terminals" db=596.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:12:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:12:23.740] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:12:23.741] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=267.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:12:23.783] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:12:24.172] [DEBUG] QUERY OK db=388.5ms queue=0.7ms idle=42.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "58671c15-0bd2-4b69-8acd-01749e9b876b", "2026-07-15T04:22:13Z", ~N[2026-07-15 13:12:23], ~N[2026-07-15 13:12:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:12:24.173] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47295, oid: "58671c15-0bd2-4b69-8acd-01749e9b876b", upload_time: "2026-07-15T04:22:13Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:23], updated_at: ~N[2026-07-15 13:12:23]} [2026-07-15 13:12:24.173] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:22:13Z", "value" => "morefun"} [2026-07-15 13:12:24.453] [DEBUG] QUERY OK db=279.4ms idle=390.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "morefun", "vendor", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407753, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.453] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:22:13Z", "value" => "kiosk_launcher"} [2026-07-15 13:12:24.495] [DEBUG] QUERY OK db=41.8ms idle=280.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "kiosk_launcher", "model", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407754, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.495] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:22:13Z", "value" => "1.0"} [2026-07-15 13:12:24.541] [DEBUG] QUERY OK db=45.4ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "1.0", "app_version", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407755, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.542] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:22:13Z", "value" => "13"} [2026-07-15 13:12:24.579] [DEBUG] QUERY OK db=36.5ms queue=0.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "13", "android_version", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407756, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.580] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "930"} [2026-07-15 13:12:24.613] [DEBUG] QUERY OK db=32.4ms queue=0.4ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "930", "ram_free_mb", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407757, itemkey: "ram_free_mb", value: "930", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.613] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:22:13Z", "value" => "WIFI"} [2026-07-15 13:12:24.659] [DEBUG] QUERY OK db=44.9ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "WIFI", "network_type", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407758, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.660] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:22:13Z", "value" => "true"} [2026-07-15 13:12:24.684] [DEBUG] QUERY OK db=22.5ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "true", "kiosk_active", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407759, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.684] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:22:13Z", "value" => ""} [2026-07-15 13:12:24.707] [DEBUG] QUERY OK db=23.1ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:22:13Z", "sim_operator", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407760, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.708] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"} [2026-07-15 13:12:24.742] [DEBUG] QUERY OK db=33.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "UNKNOWN", "sim_number", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407761, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.743] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"} [2026-07-15 13:12:24.765] [DEBUG] QUERY OK db=21.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "UNKNOWN", "sim_iccid", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407762, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.765] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"} [2026-07-15 13:12:24.790] [DEBUG] QUERY OK db=24.4ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "UNKNOWN", "sim_imsi", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407763, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.791] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"} [2026-07-15 13:12:24.835] [DEBUG] QUERY OK db=43.0ms queue=0.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "UNKNOWN", "sim_iccid2", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407764, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.835] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:22:13Z", "value" => "UNKNOWN"} [2026-07-15 13:12:24.867] [DEBUG] QUERY OK db=29.4ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "UNKNOWN", "sim_imsi2", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407765, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.867] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "15"} [2026-07-15 13:12:24.893] [DEBUG] QUERY OK db=25.2ms queue=0.1ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "15", "data_usage_mb", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407766, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.894] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:22:13Z", "value" => "0"} [2026-07-15 13:12:24.928] [DEBUG] QUERY OK db=34.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "0", "mobile_data_mb", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407767, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.929] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:22:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:12:24.964] [DEBUG] QUERY OK db=32.2ms queue=0.1ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47295, ~N[2026-07-15 13:12:24], ~N[2026-07-15 13:12:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:24.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407768, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:22:13Z", message: nil, status_log_id: 47295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:24], updated_at: ~N[2026-07-15 13:12:24]}} [2026-07-15 13:12:24.968] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=39.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:12:24.973] [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-07-15 13:11:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:12:24.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms queue=0.1ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:24.983] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.2ms queue=2.4ms idle=10.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:49.092] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:12:49.092] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:15:55Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:15:55Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:15:55Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:15:55Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:15:55Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:15:55Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:15:55Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:15:55Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:15:55Z","vendor":"MoreFun"} [2026-07-15 13:12:49.092] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:15:55Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:15:55Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:15:55Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:15:55Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:15:55Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:15:55Z", "vendor" => "MoreFun"} [2026-07-15 13:12:49.092] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:12:49.092] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:12:49.093] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:12:49.095] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=1319.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:12:49.096] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=555.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:12:49.097] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:12:49.100] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms 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-15 13:12:49.102] [DEBUG] QUERY OK source="pos_terminal" db=1.2ms idle=3.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:12:49.142] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms queue=0.4ms idle=1.8ms 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-15 13:12:49.143] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1395.7ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 13:12:49.143] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:12:49.144] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.2ms idle=41.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:12:49.146] [DEBUG] QUERY OK source="address" db=0.8ms queue=0.1ms idle=3.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:12:49.146] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:12:49.147] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:12:49.176] [DEBUG] QUERY OK db=27.1ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6f2472e046174fc4e5f8615df43c57123901ce6fbd0929ffb7d4c9dca51bb60a", 18690, 913, ~U[2026-07-15 13:12:49Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:12:49.176] [INFO ] AutoPushService: Created push log 33583 for MF919 params.zip [2026-07-15 13:12:49.176] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 18690, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:12:49.176] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:12:49.176] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:12:49.178] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=30.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:12:49.181] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-07-15 13:12:49.209] [DEBUG] QUERY OK db=26.8ms idle=6.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b982f5646657d998c0cd3c60163632814c9765971d879ef390738b6e37f392a1", 18754, 17947, ~U[2026-07-15 13:12:49Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:12:49.209] [INFO ] AutoPushService: Created push log 33584 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:12:49.210] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 18754, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:12:49.210] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:12:49.210] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:12:49.211] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=32.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:12:49.211] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:12:49.212] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:12:49.212] [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-15 13:12:49.214] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:12:49.214] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:12:49.214] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:12:49.215] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:12:49.216] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:12:49.216] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:12:49.217] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:12:49.218] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:12:49.248] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:12:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:12:49.249] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=31.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:12:49.250] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 13:12:49.251] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:12:49.251] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:12:49.294] [DEBUG] QUERY OK source="parameter_push_logs" db=42.1ms idle=1.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:42:49]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:12:49.294] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:12:49.294] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:12:49.296] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:12:49.297] [DEBUG] QUERY OK source="config_file_versions" db=1.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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:12:49.298] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:12:49.298] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:12:49.324] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms queue=0.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:12:49.362] [DEBUG] QUERY OK db=37.5ms idle=26.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:15:55Z", ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:12:49.363] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47296, oid: "organization_id", upload_time: "2026-07-15T21:15:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]} [2026-07-15 13:12:49.363] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:15:55Z", "value" => "online"} [2026-07-15 13:12:49.384] [DEBUG] QUERY OK db=20.7ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:15:55Z", "online", "status", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407769, itemkey: "status", value: "online", timestamp: "2026-07-15T21:15:55Z", message: "Terminal status update", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.384] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:12:49.385] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=22.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:49], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 13:12:49.385] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:15:55Z", "value" => "50"} [2026-07-15 13:12:49.385] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:12:49.419] [DEBUG] QUERY OK db=33.5ms queue=0.4ms 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-15T21:15:55Z", "50", "battery", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407770, itemkey: "battery", value: "50", timestamp: "2026-07-15T21:15:55Z", message: "Battery level", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.420] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:15:55Z", "value" => "online"} [2026-07-15 13:12:49.451] [DEBUG] QUERY OK db=31.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:15:55Z", "online", "network", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407771, itemkey: "network", value: "online", timestamp: "2026-07-15T21:15:55Z", message: "Network connectivity", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.452] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:12:49.453] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=32.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:49], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-07-15 13:12:49.453] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:15:55Z", "value" => "0"} [2026-07-15 13:12:49.453] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:12:49.493] [DEBUG] QUERY OK db=39.6ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:15:55Z", "0", "cpu", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407772, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:15:55Z", message: "CPU usage percentage", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.493] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.0"} [2026-07-15 13:12:49.539] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:15:55Z", "1.0.0", "parameter_config", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407773, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:15:55Z", message: "Current parameters version", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.540] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.1"} [2026-07-15 13:12:49.589] [DEBUG] QUERY OK db=48.1ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:15:55Z", "1.0.1", "emv_config", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407774, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:15:55Z", message: "Current EMV config version", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.589] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:15:55Z", "value" => ""} [2026-07-15 13:12:49.750] [DEBUG] QUERY OK db=119.4ms queue=41.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:15:55Z", "keys_config", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407775, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:15:55Z", message: "Current keys config version", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.750] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:15:55Z", "value" => "1.0.0"} [2026-07-15 13:12:49.786] [DEBUG] QUERY OK db=35.1ms idle=162.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:15:55Z", "1.0.0", "application", 47296, ~N[2026-07-15 13:12:49], ~N[2026-07-15 13:12:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:49.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407776, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:15:55Z", message: "Current application version", status_log_id: 47296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:49], updated_at: ~N[2026-07-15 13:12:49]}} [2026-07-15 13:12:49.787] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=36.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-07-15 13:12:49.788] [WARN ] Unexpected async result [2026-07-15 13:12:49.788] [WARN ] Unexpected async result [2026-07-15 13:12:49.789] [DEBUG] QUERY OK source="tms_terminals" db=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:12:49.793] [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-07-15 13:11:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:12:49.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:49.799] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=0.5ms idle=8.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:51.892] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:12:51.892] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:15:59Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:15:59Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:15:59Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:15:59Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:15:59Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:15:59Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:15:59Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:15:59Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:15:59Z","vendor":"MoreFun"} [2026-07-15 13:12:51.892] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:15:59Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:15:59Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:15:59Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:15:59Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:15:59Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:15:59Z", "vendor" => "MoreFun"} [2026-07-15 13:12:51.892] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:12:51.892] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:12:51.892] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:12:51.893] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=343.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:12:51.895] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=120.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:12:51.896] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:12:51.898] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.8ms 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-15 13:12:51.899] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:12:51.940] [DEBUG] QUERY OK source="pos_merchant" db=40.4ms idle=1.0ms 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-15 13:12:51.941] [DEBUG] QUERY OK db=0.9ms queue=0.4ms idle=1193.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 ["490603880000000"] [2026-07-15 13:12:51.941] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:12:51.942] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=42.6ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:12:51.943] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:12:51.943] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:12:51.944] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:12:51.976] [DEBUG] QUERY OK db=30.5ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3f30bb71cbb285e80a7e24863d0b609663fecb220a4cfd3aa39db549f97b83b3", 1989, 913, ~U[2026-07-15 13:12:51Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:12:51], ~N[2026-07-15 13:12:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:12:51.977] [INFO ] AutoPushService: Created push log 33585 for MF919 params.zip [2026-07-15 13:12:51.977] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 1989, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:12:51.977] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:12:51.977] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:12:51.978] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=34.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:12:51.982] [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-15 13:12:52.034] [DEBUG] QUERY OK db=49.8ms idle=7.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9f327137f2a8ac2666df066367d47cd673a73ff221fc0af66db535a268a07b26", 18850, 17947, ~U[2026-07-15 13:12:51Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:12:51], ~N[2026-07-15 13:12:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:12:52.034] [INFO ] AutoPushService: Created push log 33586 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:12:52.034] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 18850, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:12:52.034] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:12:52.034] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:12:52.035] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=56.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:12:52.036] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:12:52.038] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:12:52.038] [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-15 13:12:52.039] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:12:52.039] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:12:52.039] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:12:52.040] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-15 13:12:52.041] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:12:52.041] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:12:52.042] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:12:52.044] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:12:52.091] [DEBUG] QUERY OK source="tms_terminals" db=45.8ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:12:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:12:52.092] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=48.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:12:52.093] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:12:52.094] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:12:52.094] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:12:52.123] [DEBUG] QUERY OK source="parameter_push_logs" db=28.9ms idle=1.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:42:52]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:12:52.124] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:12:52.124] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:12:52.125] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=30.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:12:52.126] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:12:52.126] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:12:52.127] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:12:52.153] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:12:52.193] [DEBUG] QUERY OK db=39.8ms idle=26.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:15:59Z", ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:12:52.194] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47297, oid: "organization_id", upload_time: "2026-07-15T21:15:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]} [2026-07-15 13:12:52.194] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:15:59Z", "value" => "online"} [2026-07-15 13:12:52.220] [DEBUG] QUERY OK db=26.1ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:15:59Z", "online", "status", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407777, itemkey: "status", value: "online", timestamp: "2026-07-15T21:15:59Z", message: "Terminal status update", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.221] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:12:52.221] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:15:59Z", "value" => "50"} [2026-07-15 13:12:52.221] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:12:52.244] [DEBUG] QUERY OK db=23.1ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:15:59Z", "50", "battery", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407778, itemkey: "battery", value: "50", timestamp: "2026-07-15T21:15:59Z", message: "Battery level", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.245] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:15:59Z", "value" => "online"} [2026-07-15 13:12:52.273] [DEBUG] QUERY OK db=27.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:15:59Z", "online", "network", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407779, itemkey: "network", value: "online", timestamp: "2026-07-15T21:15:59Z", message: "Network connectivity", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.274] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:12:52.274] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:15:59Z", "value" => "0"} [2026-07-15 13:12:52.274] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:12:52.308] [DEBUG] QUERY OK db=33.4ms queue=0.2ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:15:59Z", "0", "cpu", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407780, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:15:59Z", message: "CPU usage percentage", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.309] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.0"} [2026-07-15 13:12:52.332] [DEBUG] QUERY OK db=23.0ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:15:59Z", "1.0.0", "parameter_config", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407781, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:15:59Z", message: "Current parameters version", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.333] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.1"} [2026-07-15 13:12:52.366] [DEBUG] QUERY OK db=33.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:15:59Z", "1.0.1", "emv_config", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407782, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:15:59Z", message: "Current EMV config version", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.367] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:15:59Z", "value" => ""} [2026-07-15 13:12:52.402] [DEBUG] QUERY OK db=34.4ms queue=0.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:15:59Z", "keys_config", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407783, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:15:59Z", message: "Current keys config version", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.402] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:15:59Z", "value" => "1.0.0"} [2026-07-15 13:12:52.426] [DEBUG] QUERY OK db=23.5ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:15:59Z", "1.0.0", "application", 47297, ~N[2026-07-15 13:12:52], ~N[2026-07-15 13:12:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:52.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407784, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:15:59Z", message: "Current application version", status_log_id: 47297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:52], updated_at: ~N[2026-07-15 13:12:52]}} [2026-07-15 13:12:52.427] [WARN ] Unexpected async result [2026-07-15 13:12:52.427] [WARN ] Unexpected async result [2026-07-15 13:12:52.428] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=25.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:12:52.431] [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-07-15 13:11:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:12:52.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:52.440] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.5ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:53.545] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:12:53.545] [INFO ] Incoming JSON payload: {"oid":"65b227fb-8b91-49b2-8389-c95349cde7b4","sn":"98250623730001","uploadTime":"2026-07-15T04:22:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:22:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:12:53.547] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "65b227fb-8b91-49b2-8389-c95349cde7b4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:22:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:22:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:22:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:22:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:22:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:22:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:22:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:22:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:22:43Z", "vendor" => "morefun"} [2026-07-15 13:12:53.547] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:12:53.547] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:12:53.547] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:12:53.548] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1107.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-15 13:12:53.549] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=996.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-15 13:12:53.549] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:12:53.549] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:12:53.550] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:12:53.612] [DEBUG] QUERY OK source="tms_terminals" db=62.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:12:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:12:53.613] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:12:53.614] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=58.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:12:53.653] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:12:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:12:53.677] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=39.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "65b227fb-8b91-49b2-8389-c95349cde7b4", "2026-07-15T04:22:43Z", ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:12:53.677] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47298, oid: "65b227fb-8b91-49b2-8389-c95349cde7b4", upload_time: "2026-07-15T04:22:43Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]} [2026-07-15 13:12:53.677] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:22:43Z", "value" => "morefun"} [2026-07-15 13:12:53.711] [DEBUG] QUERY OK db=33.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "morefun", "vendor", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407785, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.711] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:22:43Z", "value" => "kiosk_launcher"} [2026-07-15 13:12:53.781] [DEBUG] QUERY OK db=28.5ms queue=40.9ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "kiosk_launcher", "model", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407786, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.781] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:22:43Z", "value" => "1.0"} [2026-07-15 13:12:53.805] [DEBUG] QUERY OK db=23.1ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "1.0", "app_version", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407787, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.805] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:22:43Z", "value" => "13"} [2026-07-15 13:12:53.838] [DEBUG] QUERY OK db=32.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "13", "android_version", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407788, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.838] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "929"} [2026-07-15 13:12:53.880] [DEBUG] QUERY OK db=41.1ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "929", "ram_free_mb", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407789, itemkey: "ram_free_mb", value: "929", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.880] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:22:43Z", "value" => "WIFI"} [2026-07-15 13:12:53.916] [DEBUG] QUERY OK db=35.1ms queue=0.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "WIFI", "network_type", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407790, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.916] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:22:43Z", "value" => "true"} [2026-07-15 13:12:53.932] [DEBUG] QUERY OK db=15.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "true", "kiosk_active", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407791, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.932] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:22:43Z", "value" => ""} [2026-07-15 13:12:53.978] [DEBUG] QUERY OK db=44.6ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:22:43Z", "sim_operator", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:53.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407792, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:53.978] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"} [2026-07-15 13:12:54.000] [DEBUG] QUERY OK db=21.3ms queue=0.1ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "UNKNOWN", "sim_number", 47298, ~N[2026-07-15 13:12:53], ~N[2026-07-15 13:12:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407793, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:53], updated_at: ~N[2026-07-15 13:12:53]}} [2026-07-15 13:12:54.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"} [2026-07-15 13:12:54.030] [DEBUG] QUERY OK db=29.3ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "UNKNOWN", "sim_iccid", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407794, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.031] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"} [2026-07-15 13:12:54.054] [DEBUG] QUERY OK db=22.7ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "UNKNOWN", "sim_imsi", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407795, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.054] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"} [2026-07-15 13:12:54.077] [DEBUG] QUERY OK db=22.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "UNKNOWN", "sim_iccid2", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407796, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.077] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:22:43Z", "value" => "UNKNOWN"} [2026-07-15 13:12:54.106] [DEBUG] QUERY OK db=27.8ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "UNKNOWN", "sim_imsi2", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407797, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.106] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "15"} [2026-07-15 13:12:54.148] [DEBUG] QUERY OK db=41.5ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "15", "data_usage_mb", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407798, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.148] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:22:43Z", "value" => "0"} [2026-07-15 13:12:54.171] [DEBUG] QUERY OK db=22.5ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:22:43Z", "0", "mobile_data_mb", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407799, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.172] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:22:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:12:54.221] [DEBUG] QUERY OK db=47.1ms 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-15T04:22:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47298, ~N[2026-07-15 13:12:54], ~N[2026-07-15 13:12:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:12:54.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407800, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:22:43Z", message: nil, status_log_id: 47298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:12:54], updated_at: ~N[2026-07-15 13:12:54]}} [2026-07-15 13:12:54.224] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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-15 13:12:54.227] [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-07-15 13:11:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:12:54.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:12:54.234] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=8.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:13:50.507] [INFO ] Performing scheduled filter cache refresh... [2026-07-15 13:13:50.508] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=791.6ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-07-15 13:13:50.509] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=732.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-07-15 13:13:50.509] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-07-15 13:13:53.939] [INFO ] Running offline device check... [2026-07-15 13:13:53.939] [INFO ] Starting offline device check... [2026-07-15 13:13:53.940] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=210.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-15 13:13:53.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=165.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:13:53.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.002] [DEBUG] QUERY OK source="tms_terminals" db=48.6ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:13:53], 2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:13:54.002] [INFO ] Terminal 61250424798001 back online [2026-07-15 13:13:54.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=49.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:13:54.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.006] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=0.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.038] [DEBUG] QUERY OK source="tms_terminals" db=19.6ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:13:54], 11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:13:54.038] [INFO ] Terminal 61251020798002 back online [2026-07-15 13:13:54.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=20.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=10.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.071] [DEBUG] QUERY OK source="tms_terminals" db=16.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:13:54], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:13:54.071] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 13:13:54.072] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=17.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:13:54.073] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.090] [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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=13.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.133] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:13:54.134] [INFO ] Offline device check completed. Found 37 offline devices, updated 3 statuses. [2026-07-15 13:13:54.135] [INFO ] Offline device check completed successfully [2026-07-15 13:15:19.465] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:15:19.465] [INFO ] Incoming JSON payload: {"oid":"dac1145e-7c91-4c88-bb99-b44a09e60602","sn":"98250623730001","uploadTime":"2026-07-15T04:25:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"ram_free_mb","value":"932","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:25:09Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:15:19.466] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dac1145e-7c91-4c88-bb99-b44a09e60602", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:25:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:25:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:25:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:25:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "932"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:25:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:25:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:25:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:25:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:25:09Z", "vendor" => "morefun"} [2026-07-15 13:15:19.466] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:15:19.466] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:15:19.466] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:15:19.468] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1497.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-15 13:15:19.468] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=496.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-15 13:15:19.468] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:15:19.470] [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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:15:19.470] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:15:19.537] [DEBUG] QUERY OK source="tms_terminals" db=67.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:15:19], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:15:19.538] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:15:19.539] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=68.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:15:19.602] [DEBUG] QUERY OK source="tms_terminals" db=62.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:15:19], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:15:19.640] [DEBUG] QUERY OK db=36.8ms idle=63.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "dac1145e-7c91-4c88-bb99-b44a09e60602", "2026-07-15T04:25:09Z", ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:15:19.640] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47299, oid: "dac1145e-7c91-4c88-bb99-b44a09e60602", upload_time: "2026-07-15T04:25:09Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]} [2026-07-15 13:15:19.640] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:25:09Z", "value" => "morefun"} [2026-07-15 13:15:19.665] [DEBUG] QUERY OK db=24.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "morefun", "vendor", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407801, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.666] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:25:09Z", "value" => "kiosk_launcher"} [2026-07-15 13:15:19.712] [DEBUG] QUERY OK db=45.2ms queue=0.3ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "kiosk_launcher", "model", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407802, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.712] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:25:09Z", "value" => "1.0"} [2026-07-15 13:15:19.740] [DEBUG] QUERY OK db=27.1ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "1.0", "app_version", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407803, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.740] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:25:09Z", "value" => "13"} [2026-07-15 13:15:19.778] [DEBUG] QUERY OK db=37.6ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "13", "android_version", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407804, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.779] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "932"} [2026-07-15 13:15:19.819] [DEBUG] QUERY OK db=39.2ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "932", "ram_free_mb", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407805, itemkey: "ram_free_mb", value: "932", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.819] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:25:09Z", "value" => "WIFI"} [2026-07-15 13:15:19.846] [DEBUG] QUERY OK db=26.0ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "WIFI", "network_type", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407806, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.846] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:25:09Z", "value" => "true"} [2026-07-15 13:15:19.857] [DEBUG] QUERY OK db=10.8ms queue=0.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "true", "kiosk_active", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407807, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.858] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:25:09Z", "value" => ""} [2026-07-15 13:15:19.886] [DEBUG] QUERY OK db=27.1ms queue=0.1ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:25:09Z", "sim_operator", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407808, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.886] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"} [2026-07-15 13:15:19.933] [DEBUG] QUERY OK db=46.5ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "UNKNOWN", "sim_number", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407809, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.933] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"} [2026-07-15 13:15:19.956] [DEBUG] QUERY OK db=22.7ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "UNKNOWN", "sim_iccid", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407810, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"} [2026-07-15 13:15:19.982] [DEBUG] QUERY OK db=24.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "UNKNOWN", "sim_imsi", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:19.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407811, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:19.983] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"} [2026-07-15 13:15:20.008] [DEBUG] QUERY OK db=24.5ms idle=8.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "UNKNOWN", "sim_iccid2", 47299, ~N[2026-07-15 13:15:19], ~N[2026-07-15 13:15:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:20.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:19], updated_at: ~N[2026-07-15 13:15:19]}} [2026-07-15 13:15:20.009] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:25:09Z", "value" => "UNKNOWN"} [2026-07-15 13:15:20.027] [DEBUG] QUERY OK db=18.3ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "UNKNOWN", "sim_imsi2", 47299, ~N[2026-07-15 13:15:20], ~N[2026-07-15 13:15:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:20.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407813, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:20], updated_at: ~N[2026-07-15 13:15:20]}} [2026-07-15 13:15:20.028] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "15"} [2026-07-15 13:15:20.066] [DEBUG] QUERY OK db=37.0ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "15", "data_usage_mb", 47299, ~N[2026-07-15 13:15:20], ~N[2026-07-15 13:15:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:20.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407814, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:20], updated_at: ~N[2026-07-15 13:15:20]}} [2026-07-15 13:15:20.066] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:25:09Z", "value" => "0"} [2026-07-15 13:15:20.096] [DEBUG] QUERY OK db=28.8ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "0", "mobile_data_mb", 47299, ~N[2026-07-15 13:15:20], ~N[2026-07-15 13:15:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:20.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407815, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:20], updated_at: ~N[2026-07-15 13:15:20]}} [2026-07-15 13:15:20.097] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:25:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:15:20.115] [DEBUG] QUERY OK db=16.6ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:25:09Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47299, ~N[2026-07-15 13:15:20], ~N[2026-07-15 13:15:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:15:20.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407816, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:25:09Z", message: nil, status_log_id: 47299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:15:20], updated_at: ~N[2026-07-15 13:15:20]}} [2026-07-15 13:15:20.118] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.2ms idle=21.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:15:20.123] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:13:53]}, %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-15 13:15:20.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:15:20.129] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.6ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:16:46.694] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:16:46.694] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:19:54Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:19:54Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:19:54Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:19:54Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:19:54Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:19:54Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:19:54Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:19:54Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:19:54Z","vendor":"MoreFun"} [2026-07-15 13:16:46.694] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:19:54Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:19:54Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:19:54Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:19:54Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:19:54Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:19:54Z", "vendor" => "MoreFun"} [2026-07-15 13:16:46.695] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:16:46.695] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:16:46.695] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:16:46.695] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1498.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:16:46.696] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=497.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:16:46.697] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-15 13:16:46.701] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=1.7ms idle=1.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:16:46.703] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=5.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:16:46.742] [DEBUG] QUERY OK source="pos_merchant" db=38.1ms idle=2.1ms 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-15 13:16:46.746] [DEBUG] QUERY OK db=1.0ms queue=3.2ms idle=1978.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 ["490603880000000"] [2026-07-15 13:16:46.746] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:16:46.747] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=43.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:16:46.748] [DEBUG] QUERY OK source="address" db=0.6ms idle=5.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:16:46.748] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:16:46.749] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:16:46.778] [DEBUG] QUERY OK db=27.7ms idle=2.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7c4c9c3d6cb7848a552a8c3afad2d013d62d7c6771d4d3a7898f29e9decd23b3", 19010, 913, ~U[2026-07-15 13:16:46Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:16:46], ~N[2026-07-15 13:16:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:16:46.778] [INFO ] AutoPushService: Created push log 33587 for MF919 params.zip [2026-07-15 13:16:46.778] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 19010, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:16:46.778] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:16:46.778] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:16:46.780] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=30.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:16:46.782] [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-15 13:16:46.820] [DEBUG] QUERY OK db=37.5ms queue=0.1ms idle=4.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a93910c1ecd9ec29c190f84383267241a14e75a909821d43855967f231ed23b5", 19074, 17947, ~U[2026-07-15 13:16:46Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:16:46], ~N[2026-07-15 13:16:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:16:46.820] [INFO ] AutoPushService: Created push log 33588 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:16:46.820] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 19074, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:16:46.820] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:16:46.821] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:16:46.822] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=41.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:16:46.822] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:16:46.822] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:16:46.823] [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-15 13:16:46.827] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:16:46.827] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:16:46.828] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:16:46.829] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=6.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:16:46.831] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:16:46.831] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:16:46.832] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=8.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:16:46.833] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:16:46.861] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:16:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:16:46.862] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=28.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:16:46.863] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-15 13:16:46.863] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:16:46.863] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:16:46.912] [DEBUG] QUERY OK source="parameter_push_logs" db=47.9ms idle=0.9ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:46:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:16:46.912] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:16:46.912] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:16:46.915] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:16:46.916] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:16:46.916] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:16:46.917] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:16:46.940] [DEBUG] QUERY OK source="tms_terminals" db=22.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:16:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:16:46.979] [DEBUG] QUERY OK db=39.1ms idle=22.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:19:54Z", ~N[2026-07-15 13:16:46], ~N[2026-07-15 13:16:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:16:46.979] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47300, oid: "organization_id", upload_time: "2026-07-15T21:19:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:46], updated_at: ~N[2026-07-15 13:16:46]} [2026-07-15 13:16:46.979] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:19:54Z", "value" => "online"} [2026-07-15 13:16:47.012] [DEBUG] QUERY OK db=31.8ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:19:54Z", "online", "status", 47300, ~N[2026-07-15 13:16:46], ~N[2026-07-15 13:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407817, itemkey: "status", value: "online", timestamp: "2026-07-15T21:19:54Z", message: "Terminal status update", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:46], updated_at: ~N[2026-07-15 13:16:46]}} [2026-07-15 13:16:47.012] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:16:47.013] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:16:47.014] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:19:54Z", "value" => "49"} [2026-07-15 13:16:47.038] [DEBUG] QUERY OK db=23.5ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:19:54Z", "49", "battery", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407818, itemkey: "battery", value: "49", timestamp: "2026-07-15T21:19:54Z", message: "Battery level", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.039] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:19:54Z", "value" => "online"} [2026-07-15 13:16:47.073] [DEBUG] QUERY OK db=33.3ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:19:54Z", "online", "network", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407819, itemkey: "network", value: "online", timestamp: "2026-07-15T21:19:54Z", message: "Network connectivity", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.073] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:16:47.073] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:16:47.073] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:19:54Z", "value" => "0"} [2026-07-15 13:16:47.118] [DEBUG] QUERY OK db=43.3ms queue=0.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:19:54Z", "0", "cpu", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407820, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:19:54Z", message: "CPU usage percentage", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.119] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.0"} [2026-07-15 13:16:47.158] [DEBUG] QUERY OK db=36.9ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:19:54Z", "1.0.0", "parameter_config", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407821, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:19:54Z", message: "Current parameters version", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.158] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.1"} [2026-07-15 13:16:47.200] [DEBUG] QUERY OK db=40.8ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:19:54Z", "1.0.1", "emv_config", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407822, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:19:54Z", message: "Current EMV config version", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.200] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:19:54Z", "value" => ""} [2026-07-15 13:16:47.226] [DEBUG] QUERY OK db=24.5ms queue=1.3ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:19:54Z", "keys_config", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407823, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:19:54Z", message: "Current keys config version", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.228] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:19:54Z", "value" => "1.0.0"} [2026-07-15 13:16:47.260] [DEBUG] QUERY OK db=32.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:19:54Z", "1.0.0", "application", 47300, ~N[2026-07-15 13:16:47], ~N[2026-07-15 13:16:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:16:47.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407824, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:19:54Z", message: "Current application version", status_log_id: 47300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:16:47], updated_at: ~N[2026-07-15 13:16:47]}} [2026-07-15 13:16:47.261] [WARN ] Unexpected async result [2026-07-15 13:16:47.261] [WARN ] Unexpected async result [2026-07-15 13:16:47.263] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=36.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:16:47.271] [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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:16:47.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms queue=0.1ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:16:47.282] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.3ms queue=1.2ms idle=15.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:03.492] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:17:03.492] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:20:11Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:20:11Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:20:11Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:20:11Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:20:11Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:20:11Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:20:11Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:20:11Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:20:11Z","vendor":"MoreFun"} [2026-07-15 13:17:03.493] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:20:11Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:20:11Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:20:11Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:20:11Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:20:11Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:20:11Z", "vendor" => "MoreFun"} [2026-07-15 13:17:03.493] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:17:03.493] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:17:03.493] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:17:03.497] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=1253.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:17:03.498] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=234.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:17:03.509] [DEBUG] QUERY OK source="parameter_template_values" db=9.4ms idle=1.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:03.521] [DEBUG] QUERY OK source="parameter_definitions" db=5.5ms queue=6.0ms idle=10.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:03.526] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=16.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:17:03.564] [DEBUG] QUERY OK source="pos_merchant" db=37.8ms idle=5.8ms 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-15 13:17:03.566] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1.8e3ms 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-15 13:17:03.566] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:17:03.567] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=40.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 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:17:03.574] [DEBUG] QUERY OK source="address" db=6.6ms 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` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:17:03.574] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:17:03.579] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:17:03.629] [DEBUG] QUERY OK db=49.4ms idle=12.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b74ea9c7c3a607ce51fe96e8d4bcf8b2220f7b551076ead740c7fabda898c72f", 5572, 913, ~U[2026-07-15 13:17:03Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:17:03.631] [INFO ] AutoPushService: Created push log 33589 for MF919 params.zip [2026-07-15 13:17:03.631] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 5572, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:17:03.631] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:03.631] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:17:03.634] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms queue=0.2ms idle=57.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:17:03.648] [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-15 13:17:03.687] [DEBUG] QUERY OK db=36.4ms idle=21.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4370f426123c60fb9f46b70c445c77916af88da6157ca87f52067f5e1297c599", 19266, 17947, ~U[2026-07-15 13:17:03Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:17:03.689] [INFO ] AutoPushService: Created push log 33590 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:17:03.689] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 19266, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:17:03.689] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:03.689] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:17:03.701] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms queue=0.8ms idle=65.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:17:03.701] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:17:03.706] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.9ms idle=14.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 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-15 13:17:03.706] [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-15 13:17:03.712] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:17:03.712] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:03.712] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:03.720] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=2.2ms idle=15.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:03.720] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:03.720] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:17:03.724] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=16.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:17:03.724] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:17:03.749] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:17:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:17:03.750] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=25.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:17:03.752] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:03.755] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:03.755] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:17:03.792] [DEBUG] QUERY OK source="parameter_push_logs" db=36.4ms idle=2.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:47:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:17:03.792] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:17:03.792] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:17:03.799] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:17:03.800] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=7.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:03.800] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:03.802] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:17:03.836] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms queue=0.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:17:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:17:03.871] [DEBUG] QUERY OK db=34.2ms idle=34.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:20:11Z", ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:17:03.873] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47301, oid: "organization_id", upload_time: "2026-07-15T21:20:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:03], updated_at: ~N[2026-07-15 13:17:03]} [2026-07-15 13:17:03.873] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:20:11Z", "value" => "online"} [2026-07-15 13:17:03.914] [DEBUG] QUERY OK db=39.7ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:20:11Z", "online", "status", 47301, ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:03.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407825, itemkey: "status", value: "online", timestamp: "2026-07-15T21:20:11Z", message: "Terminal status update", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:03], updated_at: ~N[2026-07-15 13:17:03]}} [2026-07-15 13:17:03.914] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:17:03.915] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:20:11Z", "value" => "49"} [2026-07-15 13:17:03.921] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:03.961] [DEBUG] QUERY OK db=46.1ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:20:11Z", "49", "battery", 47301, ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:03.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407826, itemkey: "battery", value: "49", timestamp: "2026-07-15T21:20:11Z", message: "Battery level", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:03], updated_at: ~N[2026-07-15 13:17:03]}} [2026-07-15 13:17:03.964] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:20:11Z", "value" => "online"} [2026-07-15 13:17:04.001] [DEBUG] QUERY OK db=35.4ms queue=0.1ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:20:11Z", "online", "network", 47301, ~N[2026-07-15 13:17:03], ~N[2026-07-15 13:17:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407827, itemkey: "network", value: "online", timestamp: "2026-07-15T21:20:11Z", message: "Network connectivity", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:03], updated_at: ~N[2026-07-15 13:17:03]}} [2026-07-15 13:17:04.002] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:17:04.002] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:04.002] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:20:11Z", "value" => "0"} [2026-07-15 13:17:04.047] [DEBUG] QUERY OK db=36.4ms queue=8.0ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:20:11Z", "0", "cpu", 47301, ~N[2026-07-15 13:17:04], ~N[2026-07-15 13:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407828, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:20:11Z", message: "CPU usage percentage", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:04], updated_at: ~N[2026-07-15 13:17:04]}} [2026-07-15 13:17:04.048] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.0"} [2026-07-15 13:17:04.102] [DEBUG] QUERY OK db=46.2ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:20:11Z", "1.0.0", "parameter_config", 47301, ~N[2026-07-15 13:17:04], ~N[2026-07-15 13:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407829, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:20:11Z", message: "Current parameters version", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:04], updated_at: ~N[2026-07-15 13:17:04]}} [2026-07-15 13:17:04.103] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.1"} [2026-07-15 13:17:04.140] [DEBUG] QUERY OK db=35.8ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:20:11Z", "1.0.1", "emv_config", 47301, ~N[2026-07-15 13:17:04], ~N[2026-07-15 13:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407830, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:20:11Z", message: "Current EMV config version", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:04], updated_at: ~N[2026-07-15 13:17:04]}} [2026-07-15 13:17:04.140] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:20:11Z", "value" => ""} [2026-07-15 13:17:04.174] [DEBUG] QUERY OK db=28.0ms queue=5.5ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:20:11Z", "keys_config", 47301, ~N[2026-07-15 13:17:04], ~N[2026-07-15 13:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407831, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:20:11Z", message: "Current keys config version", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:04], updated_at: ~N[2026-07-15 13:17:04]}} [2026-07-15 13:17:04.175] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:20:11Z", "value" => "1.0.0"} [2026-07-15 13:17:04.217] [DEBUG] QUERY OK db=41.6ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:20:11Z", "1.0.0", "application", 47301, ~N[2026-07-15 13:17:04], ~N[2026-07-15 13:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:04.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407832, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:20:11Z", message: "Current application version", status_log_id: 47301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:04], updated_at: ~N[2026-07-15 13:17:04]}} [2026-07-15 13:17:04.220] [WARN ] Unexpected async result [2026-07-15 13:17:04.220] [WARN ] Unexpected async result [2026-07-15 13:17:04.221] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=43.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-15 13:17:04.244] [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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:17:04.258] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms queue=0.2ms idle=33.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:04.272] [DEBUG] QUERY OK source="tms_terminal_status_items" db=4.8ms queue=8.8ms idle=37.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:39.506] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:17:39.506] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:20:47Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:20:47Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:20:47Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:20:47Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:20:47Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:20:47Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:20:47Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:20:47Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:20:47Z","vendor":"MoreFun"} [2026-07-15 13:17:39.506] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:20:47Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:20:47Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:20:47Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:20:47Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:20:47Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:20:47Z", "vendor" => "MoreFun"} [2026-07-15 13:17:39.506] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:17:39.506] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:17:39.507] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:17:39.508] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=721.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:17:39.509] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=83.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:17:39.510] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:39.512] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:39.513] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:17:39.552] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-15 13:17:39.554] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1786.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 ["490603880000000"] [2026-07-15 13:17:39.554] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:17:39.555] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms 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 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:17:39.555] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:17:39.556] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:17:39.557] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:17:39.617] [DEBUG] QUERY OK db=59.1ms idle=2.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "90afcfec67ea44db33ce200acf0a2361693964674cc13341cda7995075304169", 5604, 913, ~U[2026-07-15 13:17:39Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:17:39.617] [INFO ] AutoPushService: Created push log 33591 for MF919 params.zip [2026-07-15 13:17:39.617] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 5604, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:17:39.618] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:39.618] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:17:39.619] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=62.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:17:39.623] [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-15 13:17:39.667] [DEBUG] QUERY OK db=42.5ms idle=7.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fb563cee67b60812401a3c6fcf7ffef3644a76a97db78d688f699abfbee0a85b", 5668, 17947, ~U[2026-07-15 13:17:39Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:17:39.667] [INFO ] AutoPushService: Created push log 33592 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:17:39.667] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 5668, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:17:39.668] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:39.668] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:17:39.670] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=49.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:17:39.670] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:17:39.671] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:17:39.671] [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-15 13:17:39.673] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:17:39.673] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:39.673] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:39.676] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=1.8ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:39.676] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:39.676] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:17:39.678] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=5.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:17:39.678] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:17:39.720] [DEBUG] QUERY OK source="tms_terminals" db=39.5ms queue=0.1ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:17:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:17:39.721] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms 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` = ?)) 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-15 13:17:39.722] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.2ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:39.723] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:39.723] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:17:39.750] [DEBUG] QUERY OK source="parameter_push_logs" db=26.5ms idle=1.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:47:39]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:17:39.750] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:17:39.751] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:17:39.752] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:17:39.753] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:39.754] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:39.755] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:17:39.785] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:17:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:17:39.810] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:20:47Z", ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:17:39.810] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47302, oid: "organization_id", upload_time: "2026-07-15T21:20:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]} [2026-07-15 13:17:39.810] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:20:47Z", "value" => "online"} [2026-07-15 13:17:39.860] [DEBUG] QUERY OK db=48.6ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:20:47Z", "online", "status", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407833, itemkey: "status", value: "online", timestamp: "2026-07-15T21:20:47Z", message: "Terminal status update", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.860] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:17:39.860] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:20:47Z", "value" => "49"} [2026-07-15 13:17:39.861] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:39.893] [DEBUG] QUERY OK db=32.5ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:20:47Z", "49", "battery", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407834, itemkey: "battery", value: "49", timestamp: "2026-07-15T21:20:47Z", message: "Battery level", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.894] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:20:47Z", "value" => "online"} [2026-07-15 13:17:39.915] [DEBUG] QUERY OK db=21.4ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:20:47Z", "online", "network", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407835, itemkey: "network", value: "online", timestamp: "2026-07-15T21:20:47Z", message: "Network connectivity", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.917] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:17:39.917] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:20:47Z", "value" => "0"} [2026-07-15 13:17:39.917] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:39.954] [DEBUG] QUERY OK db=36.4ms queue=0.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:20:47Z", "0", "cpu", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407836, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:20:47Z", message: "CPU usage percentage", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.955] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.0"} [2026-07-15 13:17:39.981] [DEBUG] QUERY OK db=26.4ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:20:47Z", "1.0.0", "parameter_config", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407837, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:20:47Z", message: "Current parameters version", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.982] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.1"} [2026-07-15 13:17:39.994] [DEBUG] QUERY OK db=11.4ms idle=28.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-15T21:20:47Z", "1.0.1", "emv_config", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:39.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407838, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:20:47Z", message: "Current EMV config version", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:39.994] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:20:47Z", "value" => ""} [2026-07-15 13:17:40.041] [DEBUG] QUERY OK db=46.3ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:20:47Z", "keys_config", 47302, ~N[2026-07-15 13:17:39], ~N[2026-07-15 13:17:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:40.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407839, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:20:47Z", message: "Current keys config version", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:39], updated_at: ~N[2026-07-15 13:17:39]}} [2026-07-15 13:17:40.042] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:20:47Z", "value" => "1.0.0"} [2026-07-15 13:17:40.075] [DEBUG] QUERY OK db=32.5ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:20:47Z", "1.0.0", "application", 47302, ~N[2026-07-15 13:17:40], ~N[2026-07-15 13:17:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:40.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407840, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:20:47Z", message: "Current application version", status_log_id: 47302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:40], updated_at: ~N[2026-07-15 13:17:40]}} [2026-07-15 13:17:40.075] [WARN ] Unexpected async result [2026-07-15 13:17:40.075] [WARN ] Unexpected async result [2026-07-15 13:17:40.077] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=34.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:17:40.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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:17:40.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:40.087] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.3ms idle=9.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:53.468] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:17:53.468] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:21:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:21:01Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:21:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:21:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:21:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:21:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:21:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:21:01Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:21:01Z","vendor":"MoreFun"} [2026-07-15 13:17:53.468] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:21:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:21:01Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:21:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:21:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:21:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:21:01Z", "vendor" => "MoreFun"} [2026-07-15 13:17:53.469] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:17:53.469] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:17:53.469] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:17:53.470] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1008.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:17:53.471] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms idle=7.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:17:53.473] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms idle=1.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:53.474] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:17:53.475] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:17:53.516] [DEBUG] QUERY OK source="pos_merchant" db=40.9ms idle=1.0ms 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-15 13:17:53.518] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1749.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 ["490603880000000"] [2026-07-15 13:17:53.518] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:17:53.519] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=43.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:17:53.520] [DEBUG] QUERY OK source="address" db=0.2ms queue=0.2ms idle=2.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:17:53.520] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:17:53.521] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:17:53.566] [DEBUG] QUERY OK db=43.3ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2fa56fc9ea7c2d83742f35c6b86e481cba23a504533370332668ee8981b25504", 18595, 913, ~U[2026-07-15 13:17:53Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:17:53.566] [INFO ] AutoPushService: Created push log 33593 for MF919 params.zip [2026-07-15 13:17:53.566] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 18595, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:17:53.566] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:53.567] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:17:53.568] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=47.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:17:53.571] [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-15 13:17:53.609] [DEBUG] QUERY OK db=36.6ms idle=6.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ef022436d2301ffa854ac7a7bf0d273010394359033b556cbf185ae9481e495b", 18659, 17947, ~U[2026-07-15 13:17:53Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:17:53.609] [INFO ] AutoPushService: Created push log 33594 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:17:53.609] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 18659, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:17:53.609] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:17:53.609] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:17:53.610] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=41.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-15 13:17:53.610] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:17:53.611] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:17:53.611] [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-15 13:17:53.612] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:17:53.613] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:53.613] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:17:53.613] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:53.613] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:53.614] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:17:53.614] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:17:53.615] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:17:53.659] [DEBUG] QUERY OK source="tms_terminals" db=44.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:17:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:17:53.661] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=45.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-15 13:17:53.661] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:53.662] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:17:53.662] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:17:53.679] [DEBUG] QUERY OK source="parameter_push_logs" db=16.6ms idle=1.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:47:53]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:17:53.680] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:17:53.680] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:17:53.681] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:17:53.682] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:17:53.682] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:17:53.683] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:17:53.715] [DEBUG] QUERY OK source="tms_terminals" db=30.8ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:17:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:17:53.734] [DEBUG] QUERY OK db=18.2ms queue=0.1ms idle=32.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:21:01Z", ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:17:53.735] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47303, oid: "organization_id", upload_time: "2026-07-15T21:21:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]} [2026-07-15 13:17:53.735] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:21:01Z", "value" => "online"} [2026-07-15 13:17:53.759] [DEBUG] QUERY OK db=24.2ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:21:01Z", "online", "status", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407841, itemkey: "status", value: "online", timestamp: "2026-07-15T21:21:01Z", message: "Terminal status update", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.760] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:17:53.760] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:21:01Z", "value" => "49"} [2026-07-15 13:17:53.760] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:53.793] [DEBUG] QUERY OK db=32.2ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:21:01Z", "49", "battery", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407842, itemkey: "battery", value: "49", timestamp: "2026-07-15T21:21:01Z", message: "Battery level", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.793] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:21:01Z", "value" => "online"} [2026-07-15 13:17:53.825] [DEBUG] QUERY OK db=31.4ms queue=0.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:21:01Z", "online", "network", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407843, itemkey: "network", value: "online", timestamp: "2026-07-15T21:21:01Z", message: "Network connectivity", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.826] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:17:53.826] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:21:01Z", "value" => "0"} [2026-07-15 13:17:53.826] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:17:53.852] [DEBUG] QUERY OK db=25.4ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:21:01Z", "0", "cpu", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407844, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:21:01Z", message: "CPU usage percentage", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.852] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.0"} [2026-07-15 13:17:53.881] [DEBUG] QUERY OK db=28.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:21:01Z", "1.0.0", "parameter_config", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407845, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:21:01Z", message: "Current parameters version", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.881] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.1"} [2026-07-15 13:17:53.910] [DEBUG] QUERY OK db=28.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:21:01Z", "1.0.1", "emv_config", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407846, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:21:01Z", message: "Current EMV config version", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.911] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:21:01Z", "value" => ""} [2026-07-15 13:17:53.950] [DEBUG] QUERY OK db=38.2ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:21:01Z", "keys_config", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407847, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:21:01Z", message: "Current keys config version", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.950] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:21:01Z", "value" => "1.0.0"} [2026-07-15 13:17:53.996] [DEBUG] QUERY OK db=45.4ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:21:01Z", "1.0.0", "application", 47303, ~N[2026-07-15 13:17:53], ~N[2026-07-15 13:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:53.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407848, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:21:01Z", message: "Current application version", status_log_id: 47303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:53], updated_at: ~N[2026-07-15 13:17:53]}} [2026-07-15 13:17:53.997] [WARN ] Unexpected async result [2026-07-15 13:17:53.997] [WARN ] Unexpected async result [2026-07-15 13:17:54.000] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=0.1ms idle=47.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-15 13:17:54.005] [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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:17:54.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:54.016] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.4ms idle=14.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:54.194] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:17:54.194] [INFO ] Incoming JSON payload: {"oid":"b0ca3cb5-87aa-4bb8-87d6-14f2f24c6713","sn":"98250623730001","uploadTime":"2026-07-15T04:27:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:27:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:17:54.196] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b0ca3cb5-87aa-4bb8-87d6-14f2f24c6713", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:27:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:27:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:27:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:27:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:27:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:27:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:27:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:27:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:27:44Z", "vendor" => "morefun"} [2026-07-15 13:17:54.196] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:17:54.197] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:17:54.197] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:17:54.198] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=183.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-15 13:17:54.199] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=181.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-15 13:17:54.199] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:17:54.201] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:17:54.202] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:17:54.228] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:17:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:17:54.228] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:17:54.229] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=27.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:17:54.249] [DEBUG] QUERY OK source="tms_terminals" db=19.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:17:54], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:17:54.295] [DEBUG] QUERY OK db=45.1ms queue=0.1ms idle=20.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b0ca3cb5-87aa-4bb8-87d6-14f2f24c6713", "2026-07-15T04:27:44Z", ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:17:54.295] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47304, oid: "b0ca3cb5-87aa-4bb8-87d6-14f2f24c6713", upload_time: "2026-07-15T04:27:44Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]} [2026-07-15 13:17:54.295] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:27:44Z", "value" => "morefun"} [2026-07-15 13:17:54.360] [DEBUG] QUERY OK db=23.1ms queue=40.7ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "morefun", "vendor", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407849, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.361] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:27:44Z", "value" => "kiosk_launcher"} [2026-07-15 13:17:54.405] [DEBUG] QUERY OK db=43.9ms queue=0.6ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "kiosk_launcher", "model", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407850, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.406] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:27:44Z", "value" => "1.0"} [2026-07-15 13:17:54.430] [DEBUG] QUERY OK db=23.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "1.0", "app_version", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407851, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.430] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:27:44Z", "value" => "13"} [2026-07-15 13:17:54.472] [DEBUG] QUERY OK db=41.6ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "13", "android_version", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407852, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.472] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "927"} [2026-07-15 13:17:54.502] [DEBUG] QUERY OK db=28.9ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "927", "ram_free_mb", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407853, itemkey: "ram_free_mb", value: "927", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.503] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:27:44Z", "value" => "WIFI"} [2026-07-15 13:17:54.532] [DEBUG] QUERY OK db=28.5ms queue=0.3ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "WIFI", "network_type", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407854, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.533] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:27:44Z", "value" => "true"} [2026-07-15 13:17:54.619] [DEBUG] QUERY OK db=86.1ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "true", "kiosk_active", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407855, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.620] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:27:44Z", "value" => ""} [2026-07-15 13:17:54.673] [DEBUG] QUERY OK db=51.7ms queue=0.7ms idle=87.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:27:44Z", "sim_operator", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407856, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.673] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"} [2026-07-15 13:17:54.737] [DEBUG] QUERY OK db=63.6ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "UNKNOWN", "sim_number", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407857, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.738] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"} [2026-07-15 13:17:54.896] [DEBUG] QUERY OK db=157.6ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "UNKNOWN", "sim_iccid", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407858, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.896] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"} [2026-07-15 13:17:54.947] [DEBUG] QUERY OK db=50.6ms idle=159.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "UNKNOWN", "sim_imsi", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:54.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407859, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:54.947] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"} [2026-07-15 13:17:55.019] [DEBUG] QUERY OK db=70.7ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "UNKNOWN", "sim_iccid2", 47304, ~N[2026-07-15 13:17:54], ~N[2026-07-15 13:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:55.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407860, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:54], updated_at: ~N[2026-07-15 13:17:54]}} [2026-07-15 13:17:55.020] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:27:44Z", "value" => "UNKNOWN"} [2026-07-15 13:17:55.053] [DEBUG] QUERY OK db=32.5ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "UNKNOWN", "sim_imsi2", 47304, ~N[2026-07-15 13:17:55], ~N[2026-07-15 13:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:55.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407861, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:55], updated_at: ~N[2026-07-15 13:17:55]}} [2026-07-15 13:17:55.053] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "15"} [2026-07-15 13:17:55.081] [DEBUG] QUERY OK db=27.7ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "15", "data_usage_mb", 47304, ~N[2026-07-15 13:17:55], ~N[2026-07-15 13:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:55.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407862, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:55], updated_at: ~N[2026-07-15 13:17:55]}} [2026-07-15 13:17:55.081] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:27:44Z", "value" => "0"} [2026-07-15 13:17:55.115] [DEBUG] QUERY OK db=33.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "0", "mobile_data_mb", 47304, ~N[2026-07-15 13:17:55], ~N[2026-07-15 13:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:55.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407863, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:55], updated_at: ~N[2026-07-15 13:17:55]}} [2026-07-15 13:17:55.116] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:27:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:17:55.149] [DEBUG] QUERY OK db=32.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:27:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47304, ~N[2026-07-15 13:17:55], ~N[2026-07-15 13:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:17:55.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407864, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:27:44Z", message: nil, status_log_id: 47304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:17:55], updated_at: ~N[2026-07-15 13:17:55]}} [2026-07-15 13:17:55.151] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-15 13:17:55.155] [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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:17:55.160] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:17:55.162] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.4ms idle=9.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:18:51.809] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:18:51.809] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:21:59Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:21:59Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:21:59Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:21:59Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:21:59Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:21:59Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:21:59Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:21:59Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:21:59Z","vendor":"MoreFun"} [2026-07-15 13:18:51.809] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:21:59Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:21:59Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:21:59Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:21:59Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:21:59Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:21:59Z", "vendor" => "MoreFun"} [2026-07-15 13:18:51.809] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:18:51.810] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:18:51.810] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:18:51.811] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1023.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-15 13:18:51.812] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=192.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:18:51.813] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=0.1ms idle=1.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:18:51.815] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.5ms idle=1.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:18:51.816] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=2.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:18:51.857] [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` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-15 13:18:51.858] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1085.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 13:18:51.858] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:18:51.860] [DEBUG] QUERY OK source="pos_terminal_data" db=1.3ms idle=41.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:18:51.860] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.5ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:18:51.861] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:18:51.862] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:18:51.901] [DEBUG] QUERY OK db=36.8ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4940a79ce1695b1277ae816a53f1e7eb737de15987c684a0cf5d22c547edfa19", 5924, 913, ~U[2026-07-15 13:18:51Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:18:51], ~N[2026-07-15 13:18:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:18:51.901] [INFO ] AutoPushService: Created push log 33595 for MF919 params.zip [2026-07-15 13:18:51.901] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 5924, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:18:51.901] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:18:51.901] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:18:51.902] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=40.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 13:18:51.909] [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-15 13:18:51.953] [DEBUG] QUERY OK db=39.1ms queue=0.1ms idle=13.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f08acbe914035759365cfd9b5799486787334a7749b20710de2a5f936640e7f9", 19426, 17947, ~U[2026-07-15 13:18:51Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:18:51], ~N[2026-07-15 13:18:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:18:51.953] [INFO ] AutoPushService: Created push log 33596 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:18:51.953] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 19426, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:18:51.954] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:18:51.954] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:18:51.955] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=52.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:18:51.955] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:18:51.957] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:18:51.957] [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-15 13:18:51.958] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:18:51.958] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:18:51.959] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:18:51.960] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:18:51.960] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:18:51.960] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:18:51.961] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:18:51.961] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:18:51.985] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:18:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:18:51.987] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=24.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:18:51.987] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 13:18:51.988] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:18:51.988] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:18:52.006] [DEBUG] QUERY OK source="parameter_push_logs" db=16.9ms idle=1.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:48:51]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:18:52.006] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:18:52.006] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:18:52.007] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=18.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:18:52.008] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:18:52.008] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:18:52.009] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:18:52.035] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:18:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:18:52.060] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=26.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:21:59Z", ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:18:52.060] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47305, oid: "organization_id", upload_time: "2026-07-15T21:21:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]} [2026-07-15 13:18:52.060] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:21:59Z", "value" => "online"} [2026-07-15 13:18:52.089] [DEBUG] QUERY OK db=28.2ms queue=0.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:21:59Z", "online", "status", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407865, itemkey: "status", value: "online", timestamp: "2026-07-15T21:21:59Z", message: "Terminal status update", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.090] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:18:52.090] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:21:59Z", "value" => "48"} [2026-07-15 13:18:52.090] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:18:52.139] [DEBUG] QUERY OK db=48.8ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:21:59Z", "48", "battery", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407866, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:21:59Z", message: "Battery level", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.139] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:21:59Z", "value" => "online"} [2026-07-15 13:18:52.175] [DEBUG] QUERY OK db=35.4ms queue=0.1ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:21:59Z", "online", "network", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407867, itemkey: "network", value: "online", timestamp: "2026-07-15T21:21:59Z", message: "Network connectivity", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.176] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:18:52.176] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:18:52.176] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:21:59Z", "value" => "0"} [2026-07-15 13:18:52.219] [DEBUG] QUERY OK db=42.6ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:21:59Z", "0", "cpu", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407868, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:21:59Z", message: "CPU usage percentage", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.220] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.0"} [2026-07-15 13:18:52.253] [DEBUG] QUERY OK db=32.4ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:21:59Z", "1.0.0", "parameter_config", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407869, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:21:59Z", message: "Current parameters version", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.253] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.1"} [2026-07-15 13:18:52.310] [DEBUG] QUERY OK db=55.7ms queue=0.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:21:59Z", "1.0.1", "emv_config", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407870, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:21:59Z", message: "Current EMV config version", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.310] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:21:59Z", "value" => ""} [2026-07-15 13:18:52.375] [DEBUG] QUERY OK db=23.8ms queue=41.1ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:21:59Z", "keys_config", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407871, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:21:59Z", message: "Current keys config version", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.376] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:21:59Z", "value" => "1.0.0"} [2026-07-15 13:18:52.430] [DEBUG] QUERY OK db=53.4ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:21:59Z", "1.0.0", "application", 47305, ~N[2026-07-15 13:18:52], ~N[2026-07-15 13:18:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:18:52.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407872, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:21:59Z", message: "Current application version", status_log_id: 47305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:18:52], updated_at: ~N[2026-07-15 13:18:52]}} [2026-07-15 13:18:52.431] [WARN ] Unexpected async result [2026-07-15 13:18:52.431] [WARN ] Unexpected async result [2026-07-15 13:18:52.432] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=55.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-15 13:18:52.436] [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-07-15 13:16:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-07-15 13:18:52.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:18:52.441] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.6ms idle=7.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:18:54.135] [INFO ] Running offline device check... [2026-07-15 13:18:54.135] [INFO ] Starting offline device check... [2026-07-15 13:18:54.137] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=511.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-15 13:18:54.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=351.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:18:54.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.184] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:18:54], 2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:18:54.184] [INFO ] Terminal 61250424798001 back online [2026-07-15 13:18:54.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=36.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:18:54.186] [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-15 13:18:54.187] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.190] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.235] [DEBUG] QUERY OK source="tms_terminals" db=35.9ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:18:54], 11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:18:54.235] [INFO ] Terminal 61251020798002 back online [2026-07-15 13:18:54.236] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.271] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:18:54], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:18:54.271] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 13:18:54.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.303] [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-15 13:18:54.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.317] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.320] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.322] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.325] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.328] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.329] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.329] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.330] [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-15 13:18:54.332] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:18:54.332] [INFO ] Offline device check completed. Found 37 offline devices, updated 3 statuses. [2026-07-15 13:18:54.332] [INFO ] Offline device check completed successfully [2026-07-15 13:19:23.554] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:19:23.554] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:22:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:22:31Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:22:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:22:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:22:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:22:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:22:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:22:31Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:22:31Z","vendor":"MoreFun"} [2026-07-15 13:19:23.554] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:22:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:22:31Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:22:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:22:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:22:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:22:31Z", "vendor" => "MoreFun"} [2026-07-15 13:19:23.555] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:19:23.555] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:19:23.555] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:19:23.556] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1766.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:19:23.557] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=839.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:19:23.558] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:19:23.560] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.1ms 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-15 13:19:23.561] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=2.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:19:23.602] [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-15 13:19:23.603] [DEBUG] QUERY OK db=0.7ms queue=0.5ms idle=1828.3ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 13:19:23.603] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:19:23.604] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=42.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:19:23.605] [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` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:19:23.606] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:19:23.608] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:19:23.668] [DEBUG] QUERY OK db=58.5ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "693c255e9b96497f27c099d819ef5c9105e98910a1f4201b288d703c78065d76", 19458, 913, ~U[2026-07-15 13:19:23Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:19:23.668] [INFO ] AutoPushService: Created push log 33597 for MF919 params.zip [2026-07-15 13:19:23.669] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 19458, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:19:23.669] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:19:23.669] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:19:23.672] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms queue=0.1ms idle=64.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:19:23.678] [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-15 13:19:23.708] [DEBUG] QUERY OK db=28.8ms idle=11.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "66554cd0772636596e21fa9fb963b75bba5ecaa42d80afb0238091e0894df72f", 6180, 17947, ~U[2026-07-15 13:19:23Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:19:23.709] [INFO ] AutoPushService: Created push log 33598 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:19:23.709] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 6180, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:19:23.709] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:19:23.709] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:19:23.711] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=37.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:19:23.712] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:19:23.715] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=4.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:19:23.715] [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-15 13:19:23.719] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:19:23.719] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:19:23.721] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:19:23.722] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=6.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:19:23.723] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:19:23.723] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:19:23.724] [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-15 13:19:23.724] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:19:23.748] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:19:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:19:23.749] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=24.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-15 13:19:23.752] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:19:23.752] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:19:23.752] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:19:23.771] [DEBUG] QUERY OK source="parameter_push_logs" db=17.8ms idle=1.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:49:23]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:19:23.771] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:19:23.771] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:19:23.773] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=19.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:19:23.774] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.2ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:19:23.774] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:19:23.775] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:19:23.803] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:19:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:19:23.834] [DEBUG] QUERY OK db=29.9ms queue=0.1ms idle=28.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:22:31Z", ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:19:23.834] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47306, oid: "organization_id", upload_time: "2026-07-15T21:22:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]} [2026-07-15 13:19:23.834] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:22:31Z", "value" => "online"} [2026-07-15 13:19:23.862] [DEBUG] QUERY OK db=26.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:22:31Z", "online", "status", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:23.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407873, itemkey: "status", value: "online", timestamp: "2026-07-15T21:22:31Z", message: "Terminal status update", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:23.863] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:19:23.863] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:19:23.863] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:22:31Z", "value" => "48"} [2026-07-15 13:19:23.900] [DEBUG] QUERY OK db=36.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:22:31Z", "48", "battery", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:23.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407874, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:22:31Z", message: "Battery level", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:23.901] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:22:31Z", "value" => "online"} [2026-07-15 13:19:23.934] [DEBUG] QUERY OK db=31.9ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:22:31Z", "online", "network", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:23.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407875, itemkey: "network", value: "online", timestamp: "2026-07-15T21:22:31Z", message: "Network connectivity", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:23.934] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:19:23.935] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:22:31Z", "value" => "0"} [2026-07-15 13:19:23.935] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:19:23.958] [DEBUG] QUERY OK db=23.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:22:31Z", "0", "cpu", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:23.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407876, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:22:31Z", message: "CPU usage percentage", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:23.959] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.0"} [2026-07-15 13:19:23.996] [DEBUG] QUERY OK db=35.1ms queue=1.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:22:31Z", "1.0.0", "parameter_config", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:23.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407877, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:22:31Z", message: "Current parameters version", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:23.997] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.1"} [2026-07-15 13:19:24.040] [DEBUG] QUERY OK db=42.9ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:22:31Z", "1.0.1", "emv_config", 47306, ~N[2026-07-15 13:19:23], ~N[2026-07-15 13:19:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:24.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407878, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:22:31Z", message: "Current EMV config version", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:23], updated_at: ~N[2026-07-15 13:19:23]}} [2026-07-15 13:19:24.040] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:22:31Z", "value" => ""} [2026-07-15 13:19:24.064] [DEBUG] QUERY OK db=22.8ms queue=0.2ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:22:31Z", "keys_config", 47306, ~N[2026-07-15 13:19:24], ~N[2026-07-15 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:24.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407879, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:22:31Z", message: "Current keys config version", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:24], updated_at: ~N[2026-07-15 13:19:24]}} [2026-07-15 13:19:24.065] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:22:31Z", "value" => "1.0.0"} [2026-07-15 13:19:24.088] [DEBUG] QUERY OK db=23.0ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:22:31Z", "1.0.0", "application", 47306, ~N[2026-07-15 13:19:24], ~N[2026-07-15 13:19:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:24.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407880, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:22:31Z", message: "Current application version", status_log_id: 47306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:24], updated_at: ~N[2026-07-15 13:19:24]}} [2026-07-15 13:19:24.092] [WARN ] Unexpected async result [2026-07-15 13:19:24.092] [WARN ] Unexpected async result [2026-07-15 13:19:24.094] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=25.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:19:24.103] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:19:24.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms idle=15.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:19:24.113] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=1.0ms idle=17.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:19:46.218] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:19:46.219] [INFO ] Incoming JSON payload: {"oid":"08a5de19-7344-43e0-be9b-667b6df2773d","sn":"98250623730001","uploadTime":"2026-07-15T04:29:36Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:29:36Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:19:46.220] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "08a5de19-7344-43e0-be9b-667b6df2773d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:29:36Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:29:36Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:29:36Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:29:36Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:29:36Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:29:36Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:29:36Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:29:36Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:29:36Z", "vendor" => "morefun"} [2026-07-15 13:19:46.220] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:19:46.220] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:19:46.220] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:19:46.222] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=1428.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:19:46.223] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=427.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-15 13:19:46.223] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:19:46.225] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:19:46.227] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:19:46.271] [DEBUG] QUERY OK source="tms_terminals" db=43.3ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:19:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:19:46.271] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:19:46.272] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=46.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:19:46.298] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:19:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:19:46.311] [DEBUG] QUERY OK db=12.2ms idle=25.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "08a5de19-7344-43e0-be9b-667b6df2773d", "2026-07-15T04:29:36Z", ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:19:46.311] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47307, oid: "08a5de19-7344-43e0-be9b-667b6df2773d", upload_time: "2026-07-15T04:29:36Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]} [2026-07-15 13:19:46.311] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:29:36Z", "value" => "morefun"} [2026-07-15 13:19:46.376] [DEBUG] QUERY OK db=23.6ms queue=41.1ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "morefun", "vendor", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407881, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.377] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:29:36Z", "value" => "kiosk_launcher"} [2026-07-15 13:19:46.402] [DEBUG] QUERY OK db=24.4ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "kiosk_launcher", "model", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407882, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.402] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:29:36Z", "value" => "1.0"} [2026-07-15 13:19:46.430] [DEBUG] QUERY OK db=27.5ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "1.0", "app_version", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407883, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.431] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:29:36Z", "value" => "13"} [2026-07-15 13:19:46.468] [DEBUG] QUERY OK db=36.4ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "13", "android_version", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407884, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.469] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "925"} [2026-07-15 13:19:46.499] [DEBUG] QUERY OK db=30.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "925", "ram_free_mb", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407885, itemkey: "ram_free_mb", value: "925", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.500] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:29:36Z", "value" => "WIFI"} [2026-07-15 13:19:46.529] [DEBUG] QUERY OK db=27.2ms queue=0.3ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "WIFI", "network_type", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407886, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.529] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:29:36Z", "value" => "true"} [2026-07-15 13:19:46.569] [DEBUG] QUERY OK db=39.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "true", "kiosk_active", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407887, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.569] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:29:36Z", "value" => ""} [2026-07-15 13:19:46.665] [DEBUG] QUERY OK db=95.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:29:36Z", "sim_operator", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407888, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.665] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"} [2026-07-15 13:19:46.698] [DEBUG] QUERY OK db=32.6ms idle=96.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "UNKNOWN", "sim_number", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407889, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.699] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"} [2026-07-15 13:19:46.783] [DEBUG] QUERY OK db=83.1ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "UNKNOWN", "sim_iccid", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407890, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.783] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"} [2026-07-15 13:19:46.828] [DEBUG] QUERY OK db=44.2ms idle=85.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "UNKNOWN", "sim_imsi", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407891, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.829] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"} [2026-07-15 13:19:46.866] [DEBUG] QUERY OK db=36.6ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "UNKNOWN", "sim_iccid2", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407892, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.867] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:29:36Z", "value" => "UNKNOWN"} [2026-07-15 13:19:46.892] [DEBUG] QUERY OK db=24.2ms queue=0.3ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "UNKNOWN", "sim_imsi2", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407893, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.892] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "15"} [2026-07-15 13:19:46.921] [DEBUG] QUERY OK db=28.4ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "15", "data_usage_mb", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407894, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.922] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:29:36Z", "value" => "0"} [2026-07-15 13:19:46.952] [DEBUG] QUERY OK db=29.4ms queue=0.3ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "0", "mobile_data_mb", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407895, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.953] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:29:36Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:19:46.994] [DEBUG] QUERY OK db=40.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:29:36Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47307, ~N[2026-07-15 13:19:46], ~N[2026-07-15 13:19:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:19:46.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407896, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:29:36Z", message: nil, status_log_id: 47307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:19:46], updated_at: ~N[2026-07-15 13:19:46]}} [2026-07-15 13:19:46.999] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=45.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:19:47.009] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:19:47.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms queue=0.3ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:19:47.018] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=2.8ms idle=15.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:05.435] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:20:05.435] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:23:13Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:23:13Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:23:13Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:23:13Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:23:13Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:23:13Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:23:13Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:23:13Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:23:13Z","vendor":"MoreFun"} [2026-07-15 13:20:05.436] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:13Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:13Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:13Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:13Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:13Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:23:13Z", "vendor" => "MoreFun"} [2026-07-15 13:20:05.436] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:20:05.436] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:20:05.436] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:20:05.437] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1574.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:20:05.442] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.1ms idle=573.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:20:05.444] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=0.1ms idle=5.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:05.446] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.8ms idle=2.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:05.448] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms 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-15 13:20:05.489] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=1.8ms 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-15 13:20:05.491] [DEBUG] QUERY OK db=0.8ms queue=0.6ms idle=713.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 ["490603880000000"] [2026-07-15 13:20:05.491] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:20:05.493] [DEBUG] QUERY OK source="pos_terminal_data" db=1.4ms idle=43.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:20:05.494] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.4ms idle=4.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:20:05.494] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:20:05.495] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:20:05.555] [DEBUG] QUERY OK db=58.0ms idle=4.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b7fae31ab05f05a5fea50dbb6a114a6d8ea0b6194d8f90834519f9637a951151", 6340, 913, ~U[2026-07-15 13:20:05Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:20:05.555] [INFO ] AutoPushService: Created push log 33599 for MF919 params.zip [2026-07-15 13:20:05.555] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 6340, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:20:05.556] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:05.557] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:20:05.559] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=63.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:20:05.565] [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-15 13:20:05.599] [DEBUG] QUERY OK db=33.2ms idle=11.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "696504c2b32c655a898063f36e45df1dbc7895609c45c86a32283dfca46d62c2", 6404, 17947, ~U[2026-07-15 13:20:05Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:20:05.600] [INFO ] AutoPushService: Created push log 33600 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:20:05.600] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 6404, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:20:05.600] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:05.600] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:20:05.602] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.6ms idle=41.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-15 13:20:05.602] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:20:05.605] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=4.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:20:05.605] [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-15 13:20:05.611] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:20:05.611] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:05.614] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:05.620] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms queue=0.3ms idle=14.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:05.620] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:05.620] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:20:05.621] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=16.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-15 13:20:05.622] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:20:05.647] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:05.648] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=26.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:20:05.649] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 13:20:05.651] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:05.652] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:20:05.679] [DEBUG] QUERY OK source="parameter_push_logs" db=24.9ms idle=4.8ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:50:05]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:20:05.679] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:20:05.679] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:20:05.680] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=28.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:20:05.684] [DEBUG] QUERY OK source="config_file_versions" db=3.4ms queue=0.1ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:05.684] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:05.686] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=4.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:05.723] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:05.750] [DEBUG] QUERY OK db=26.3ms idle=37.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:23:13Z", ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:05.750] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47308, oid: "organization_id", upload_time: "2026-07-15T21:23:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]} [2026-07-15 13:20:05.750] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:13Z", "value" => "online"} [2026-07-15 13:20:05.776] [DEBUG] QUERY OK db=24.8ms queue=0.5ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:23:13Z", "online", "status", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407897, itemkey: "status", value: "online", timestamp: "2026-07-15T21:23:13Z", message: "Terminal status update", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.777] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:20:05.777] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:13Z", "value" => "48"} [2026-07-15 13:20:05.777] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:05.825] [DEBUG] QUERY OK db=48.0ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:23:13Z", "48", "battery", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407898, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:23:13Z", message: "Battery level", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.826] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:13Z", "value" => "online"} [2026-07-15 13:20:05.860] [DEBUG] QUERY OK db=28.3ms queue=0.4ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:23:13Z", "online", "network", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407899, itemkey: "network", value: "online", timestamp: "2026-07-15T21:23:13Z", message: "Network connectivity", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.861] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:20:05.862] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:05.861] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:13Z", "value" => "0"} [2026-07-15 13:20:05.906] [DEBUG] QUERY OK db=36.2ms queue=3.8ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:23:13Z", "0", "cpu", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407900, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:23:13Z", message: "CPU usage percentage", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.907] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.0"} [2026-07-15 13:20:05.942] [DEBUG] QUERY OK db=33.8ms queue=0.3ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:23:13Z", "1.0.0", "parameter_config", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407901, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:23:13Z", message: "Current parameters version", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.943] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.1"} [2026-07-15 13:20:05.978] [DEBUG] QUERY OK db=34.8ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:23:13Z", "1.0.1", "emv_config", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:05.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407902, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:23:13Z", message: "Current EMV config version", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:05.979] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:13Z", "value" => ""} [2026-07-15 13:20:06.043] [DEBUG] QUERY OK db=23.4ms queue=40.6ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:23:13Z", "keys_config", 47308, ~N[2026-07-15 13:20:05], ~N[2026-07-15 13:20:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:06.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407903, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:23:13Z", message: "Current keys config version", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:05], updated_at: ~N[2026-07-15 13:20:05]}} [2026-07-15 13:20:06.043] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:13Z", "value" => "1.0.0"} [2026-07-15 13:20:06.073] [DEBUG] QUERY OK db=29.4ms idle=65.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:23:13Z", "1.0.0", "application", 47308, ~N[2026-07-15 13:20:06], ~N[2026-07-15 13:20:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:06.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407904, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:23:13Z", message: "Current application version", status_log_id: 47308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:06], updated_at: ~N[2026-07-15 13:20:06]}} [2026-07-15 13:20:06.074] [WARN ] Unexpected async result [2026-07-15 13:20:06.074] [WARN ] Unexpected async result [2026-07-15 13:20:06.075] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:20:06.084] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:06.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:06.093] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=1.0ms idle=16.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:16.325] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:20:16.325] [INFO ] Incoming JSON payload: {"oid":"205284bd-713f-4aa1-97aa-ef6df1c3dad7","sn":"98250623730001","uploadTime":"2026-07-15T04:30:06Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:30:06Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:20:16.327] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "205284bd-713f-4aa1-97aa-ef6df1c3dad7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:30:06Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:30:06Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:30:06Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:30:06Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:30:06Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:30:06Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:30:06Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:30:06Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:30:06Z", "vendor" => "morefun"} [2026-07-15 13:20:16.327] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:20:16.327] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:20:16.327] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:20:16.328] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1422.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-15 13:20:16.329] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=420.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-15 13:20:16.329] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:20:16.330] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:20:16.330] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:20:16.360] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:16], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:16.360] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:20:16.361] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=30.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:16.412] [DEBUG] QUERY OK source="tms_terminals" db=50.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:16], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:16.439] [DEBUG] QUERY OK db=26.9ms idle=51.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "205284bd-713f-4aa1-97aa-ef6df1c3dad7", "2026-07-15T04:30:06Z", ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:16.439] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47309, oid: "205284bd-713f-4aa1-97aa-ef6df1c3dad7", upload_time: "2026-07-15T04:30:06Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]} [2026-07-15 13:20:16.439] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:30:06Z", "value" => "morefun"} [2026-07-15 13:20:16.458] [DEBUG] QUERY OK db=17.9ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "morefun", "vendor", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407905, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.458] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:30:06Z", "value" => "kiosk_launcher"} [2026-07-15 13:20:16.522] [DEBUG] QUERY OK db=22.0ms queue=40.9ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "kiosk_launcher", "model", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407906, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.522] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:30:06Z", "value" => "1.0"} [2026-07-15 13:20:16.547] [DEBUG] QUERY OK db=23.8ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "1.0", "app_version", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407907, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.547] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:30:06Z", "value" => "13"} [2026-07-15 13:20:16.606] [DEBUG] QUERY OK db=58.5ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "13", "android_version", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407908, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.606] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "927"} [2026-07-15 13:20:16.697] [DEBUG] QUERY OK db=89.8ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "927", "ram_free_mb", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407909, itemkey: "ram_free_mb", value: "927", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.697] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:30:06Z", "value" => "WIFI"} [2026-07-15 13:20:16.731] [DEBUG] QUERY OK db=33.2ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "WIFI", "network_type", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407910, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.731] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:30:06Z", "value" => "true"} [2026-07-15 13:20:16.771] [DEBUG] QUERY OK db=38.9ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "true", "kiosk_active", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407911, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.771] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:30:06Z", "value" => ""} [2026-07-15 13:20:16.799] [DEBUG] QUERY OK db=27.7ms queue=0.1ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:30:06Z", "sim_operator", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407912, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.800] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"} [2026-07-15 13:20:16.835] [DEBUG] QUERY OK db=34.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "UNKNOWN", "sim_number", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407913, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"} [2026-07-15 13:20:16.884] [DEBUG] QUERY OK db=48.8ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "UNKNOWN", "sim_iccid", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407914, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.885] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"} [2026-07-15 13:20:16.900] [DEBUG] QUERY OK db=14.2ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "UNKNOWN", "sim_imsi", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407915, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.900] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"} [2026-07-15 13:20:16.917] [DEBUG] QUERY OK db=16.0ms queue=0.1ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "UNKNOWN", "sim_iccid2", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407916, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.917] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:30:06Z", "value" => "UNKNOWN"} [2026-07-15 13:20:16.949] [DEBUG] QUERY OK db=31.2ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "UNKNOWN", "sim_imsi2", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407917, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.949] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "15"} [2026-07-15 13:20:16.994] [DEBUG] QUERY OK db=44.3ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "15", "data_usage_mb", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:16.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407918, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:16.994] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:30:06Z", "value" => "0"} [2026-07-15 13:20:17.024] [DEBUG] QUERY OK db=29.7ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "0", "mobile_data_mb", 47309, ~N[2026-07-15 13:20:16], ~N[2026-07-15 13:20:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:17.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407919, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:16], updated_at: ~N[2026-07-15 13:20:16]}} [2026-07-15 13:20:17.025] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:30:06Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:20:17.038] [DEBUG] QUERY OK db=11.5ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:06Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47309, ~N[2026-07-15 13:20:17], ~N[2026-07-15 13:20:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:17.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407920, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:30:06Z", message: nil, status_log_id: 47309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:17], updated_at: ~N[2026-07-15 13:20:17]}} [2026-07-15 13:20:17.040] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=14.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-15 13:20:17.044] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:17.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:17.050] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.3ms idle=8.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:22.321] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:20:22.321] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:23:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:23:30Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:23:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:23:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:23:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:23:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:23:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:23:30Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:23:30Z","vendor":"MoreFun"} [2026-07-15 13:20:22.322] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:30Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:23:30Z", "vendor" => "MoreFun"} [2026-07-15 13:20:22.322] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:20:22.322] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:20:22.322] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:20:22.323] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1403.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:20:22.325] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=401.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:20:22.325] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:22.327] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.3ms idle=1.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:22.328] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:20:22.369] [DEBUG] QUERY OK source="pos_merchant" db=40.7ms idle=0.9ms 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-15 13:20:22.370] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1584.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 ["490603880000000"] [2026-07-15 13:20:22.370] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:20:22.371] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=42.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:20:22.372] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:20:22.372] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:20:22.373] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:20:22.419] [DEBUG] QUERY OK db=44.6ms idle=3.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1e3510569d14f53a0357044bda6fb85117f840d400caa5266ab5c63f63fd28ce", 6532, 913, ~U[2026-07-15 13:20:22Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:20:22.419] [INFO ] AutoPushService: Created push log 33601 for MF919 params.zip [2026-07-15 13:20:22.420] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 6532, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:20:22.420] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:22.420] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:20:22.421] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=48.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:20:22.425] [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-15 13:20:22.464] [DEBUG] QUERY OK db=35.8ms idle=8.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1eb7f53172f17d6172490b6beeea5f89ab6a8962dae63aabc5e9ad04e2ae8a13", 18979, 17947, ~U[2026-07-15 13:20:22Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:20:22.464] [INFO ] AutoPushService: Created push log 33602 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:20:22.464] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 18979, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:20:22.464] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:22.465] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:20:22.466] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=43.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:20:22.466] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:20:22.469] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:20:22.469] [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-15 13:20:22.471] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:20:22.471] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:22.471] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:22.472] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=5.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:22.473] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:22.473] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:20:22.474] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=4.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:20:22.475] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:20:22.508] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms queue=0.2ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:22.509] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms 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.`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-15 13:20:22.510] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["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-15 13:20:22.510] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=0.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:22.510] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:20:22.528] [DEBUG] QUERY OK source="parameter_push_logs" db=16.8ms idle=0.9ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:50:22]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:20:22.528] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:20:22.528] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:20:22.529] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=18.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:20:22.530] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:22.531] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:22.531] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:22.558] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:22.612] [DEBUG] QUERY OK db=53.4ms idle=27.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:23:30Z", ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:22.612] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47310, oid: "organization_id", upload_time: "2026-07-15T21:23:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]} [2026-07-15 13:20:22.613] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:30Z", "value" => "online"} [2026-07-15 13:20:22.662] [DEBUG] QUERY OK db=48.7ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:23:30Z", "online", "status", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407921, itemkey: "status", value: "online", timestamp: "2026-07-15T21:23:30Z", message: "Terminal status update", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.663] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:20:22.663] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:30Z", "value" => "48"} [2026-07-15 13:20:22.663] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:22.704] [DEBUG] QUERY OK db=40.5ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:23:30Z", "48", "battery", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407922, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:23:30Z", message: "Battery level", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.705] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:30Z", "value" => "online"} [2026-07-15 13:20:22.729] [DEBUG] QUERY OK db=23.4ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:23:30Z", "online", "network", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407923, itemkey: "network", value: "online", timestamp: "2026-07-15T21:23:30Z", message: "Network connectivity", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.729] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:20:22.729] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:30Z", "value" => "0"} [2026-07-15 13:20:22.729] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:22.768] [DEBUG] QUERY OK db=38.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:23:30Z", "0", "cpu", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407924, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:23:30Z", message: "CPU usage percentage", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.769] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.0"} [2026-07-15 13:20:22.795] [DEBUG] QUERY OK db=25.5ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:23:30Z", "1.0.0", "parameter_config", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407925, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:23:30Z", message: "Current parameters version", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.795] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.1"} [2026-07-15 13:20:22.823] [DEBUG] QUERY OK db=27.5ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:23:30Z", "1.0.1", "emv_config", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407926, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:23:30Z", message: "Current EMV config version", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.824] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:30Z", "value" => ""} [2026-07-15 13:20:22.889] [DEBUG] QUERY OK db=23.4ms queue=41.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:23:30Z", "keys_config", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407927, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:23:30Z", message: "Current keys config version", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.889] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:30Z", "value" => "1.0.0"} [2026-07-15 13:20:22.910] [DEBUG] QUERY OK db=20.6ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:23:30Z", "1.0.0", "application", 47310, ~N[2026-07-15 13:20:22], ~N[2026-07-15 13:20:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:22.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407928, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:23:30Z", message: "Current application version", status_log_id: 47310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:22], updated_at: ~N[2026-07-15 13:20:22]}} [2026-07-15 13:20:22.911] [WARN ] Unexpected async result [2026-07-15 13:20:22.911] [WARN ] Unexpected async result [2026-07-15 13:20:22.912] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=22.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:20:22.916] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:22.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:22.922] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.6ms queue=0.6ms idle=8.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:26.614] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:20:26.614] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:23:34Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:23:34Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:23:34Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:23:34Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:23:34Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:23:34Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:23:34Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:23:34Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:23:34Z","vendor":"MoreFun"} [2026-07-15 13:20:26.614] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:34Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:34Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:34Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:34Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:34Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:23:34Z", "vendor" => "MoreFun"} [2026-07-15 13:20:26.616] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:20:26.616] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:20:26.617] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:20:26.618] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=686.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-07-15 13:20:26.618] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=252.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:20:26.619] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=0.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:26.623] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=1.9ms idle=1.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:26.624] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms queue=0.1ms idle=4.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:20:26.664] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-15 13:20:26.665] [DEBUG] QUERY OK db=0.9ms queue=0.6ms idle=1879.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 ["490603880000000"] [2026-07-15 13:20:26.665] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:20:26.666] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=42.0ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:20:26.667] [DEBUG] QUERY OK source="address" db=0.2ms idle=3.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:20:26.667] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:20:26.669] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:20:26.707] [DEBUG] QUERY OK db=34.3ms queue=0.9ms idle=4.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fafa1eff882b37eb45876120932a55b661887389c409010bffd483e7afd00f19", 19586, 913, ~U[2026-07-15 13:20:26Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:20:26.707] [INFO ] AutoPushService: Created push log 33603 for MF919 params.zip [2026-07-15 13:20:26.707] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 19586, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:20:26.707] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:26.708] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:20:26.710] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.2ms idle=41.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:20:26.717] [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-15 13:20:26.755] [DEBUG] QUERY OK db=35.8ms idle=12.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2c7aeb962327e72de3920593c414a71d876551e47606e705058303d74811a915", 2757, 17947, ~U[2026-07-15 13:20:26Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:20:26.755] [INFO ] AutoPushService: Created push log 33604 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:20:26.756] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 2757, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:20:26.756] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:26.756] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:20:26.757] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=45.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:20:26.757] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:20:26.758] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:20:26.758] [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-15 13:20:26.760] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:20:26.761] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:26.761] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:26.762] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=3.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:26.763] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:26.763] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:20:26.764] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=5.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:20:26.765] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:20:26.794] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms queue=2.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:26.795] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=29.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:20:26.796] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:26.799] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:26.800] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:20:26.828] [DEBUG] QUERY OK source="parameter_push_logs" db=28.4ms idle=3.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:50:26]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:20:26.829] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:20:26.829] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:20:26.830] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:20:26.831] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:26.832] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:26.832] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:26.866] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:26.894] [DEBUG] QUERY OK db=27.5ms queue=0.1ms idle=34.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:23:34Z", ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:26.895] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47311, oid: "organization_id", upload_time: "2026-07-15T21:23:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:26], updated_at: ~N[2026-07-15 13:20:26]} [2026-07-15 13:20:26.895] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:34Z", "value" => "online"} [2026-07-15 13:20:26.929] [DEBUG] QUERY OK db=34.0ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:23:34Z", "online", "status", 47311, ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:26.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407929, itemkey: "status", value: "online", timestamp: "2026-07-15T21:23:34Z", message: "Terminal status update", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:26], updated_at: ~N[2026-07-15 13:20:26]}} [2026-07-15 13:20:26.930] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:20:26.930] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:26.930] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:34Z", "value" => "48"} [2026-07-15 13:20:26.944] [DEBUG] QUERY OK db=13.3ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:23:34Z", "48", "battery", 47311, ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:26.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407930, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:23:34Z", message: "Battery level", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:26], updated_at: ~N[2026-07-15 13:20:26]}} [2026-07-15 13:20:26.945] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:34Z", "value" => "online"} [2026-07-15 13:20:26.987] [DEBUG] QUERY OK db=39.4ms idle=11.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:23:34Z", "online", "network", 47311, ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:26.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407931, itemkey: "network", value: "online", timestamp: "2026-07-15T21:23:34Z", message: "Network connectivity", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:26], updated_at: ~N[2026-07-15 13:20:26]}} [2026-07-15 13:20:26.987] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:20:26.989] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:34Z", "value" => "0"} [2026-07-15 13:20:26.989] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:27.014] [DEBUG] QUERY OK db=24.3ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:23:34Z", "0", "cpu", 47311, ~N[2026-07-15 13:20:26], ~N[2026-07-15 13:20:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:27.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407932, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:23:34Z", message: "CPU usage percentage", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:26], updated_at: ~N[2026-07-15 13:20:26]}} [2026-07-15 13:20:27.015] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.0"} [2026-07-15 13:20:27.054] [DEBUG] QUERY OK db=35.7ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:23:34Z", "1.0.0", "parameter_config", 47311, ~N[2026-07-15 13:20:27], ~N[2026-07-15 13:20:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:27.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407933, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:23:34Z", message: "Current parameters version", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:27], updated_at: ~N[2026-07-15 13:20:27]}} [2026-07-15 13:20:27.056] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.1"} [2026-07-15 13:20:27.096] [DEBUG] QUERY OK db=37.5ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:23:34Z", "1.0.1", "emv_config", 47311, ~N[2026-07-15 13:20:27], ~N[2026-07-15 13:20:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:27.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407934, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:23:34Z", message: "Current EMV config version", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:27], updated_at: ~N[2026-07-15 13:20:27]}} [2026-07-15 13:20:27.096] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:34Z", "value" => ""} [2026-07-15 13:20:27.121] [DEBUG] QUERY OK db=24.3ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:23:34Z", "keys_config", 47311, ~N[2026-07-15 13:20:27], ~N[2026-07-15 13:20:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:27.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407935, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:23:34Z", message: "Current keys config version", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:27], updated_at: ~N[2026-07-15 13:20:27]}} [2026-07-15 13:20:27.122] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:34Z", "value" => "1.0.0"} [2026-07-15 13:20:27.218] [DEBUG] QUERY OK db=95.0ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:23:34Z", "1.0.0", "application", 47311, ~N[2026-07-15 13:20:27], ~N[2026-07-15 13:20:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:27.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407936, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:23:34Z", message: "Current application version", status_log_id: 47311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:27], updated_at: ~N[2026-07-15 13:20:27]}} [2026-07-15 13:20:27.218] [WARN ] Unexpected async result [2026-07-15 13:20:27.218] [WARN ] Unexpected async result [2026-07-15 13:20:27.219] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=97.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-15 13:20:27.224] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:27.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.2ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:27.233] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=1.5ms idle=10.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:46.839] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:20:46.839] [INFO ] Incoming JSON payload: {"oid":"b0d5fabf-dffe-405b-b709-c923dfb3d41d","sn":"98250623730001","uploadTime":"2026-07-15T04:30:36Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:30:36Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:20:46.840] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b0d5fabf-dffe-405b-b709-c923dfb3d41d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:30:36Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:30:36Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:30:36Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:30:36Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:30:36Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:30:36Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:30:36Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:30:36Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:30:36Z", "vendor" => "morefun"} [2026-07-15 13:20:46.840] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:20:46.840] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:20:46.840] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:20:46.842] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=861.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-15 13:20:46.844] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=46.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-15 13:20:46.844] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:20:46.846] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:20:46.847] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:20:46.876] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms queue=0.1ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:46.876] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:20:46.878] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=30.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:46.925] [DEBUG] QUERY OK source="tms_terminals" db=46.4ms queue=0.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:46.948] [DEBUG] QUERY OK db=22.3ms idle=47.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "b0d5fabf-dffe-405b-b709-c923dfb3d41d", "2026-07-15T04:30:36Z", ~N[2026-07-15 13:20:46], ~N[2026-07-15 13:20:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:46.948] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47312, oid: "b0d5fabf-dffe-405b-b709-c923dfb3d41d", upload_time: "2026-07-15T04:30:36Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:46], updated_at: ~N[2026-07-15 13:20:46]} [2026-07-15 13:20:46.949] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:30:36Z", "value" => "morefun"} [2026-07-15 13:20:46.965] [DEBUG] QUERY OK db=15.1ms queue=0.4ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "morefun", "vendor", 47312, ~N[2026-07-15 13:20:46], ~N[2026-07-15 13:20:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:46.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407937, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:46], updated_at: ~N[2026-07-15 13:20:46]}} [2026-07-15 13:20:46.965] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:30:36Z", "value" => "kiosk_launcher"} [2026-07-15 13:20:47.011] [DEBUG] QUERY OK db=45.6ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "kiosk_launcher", "model", 47312, ~N[2026-07-15 13:20:46], ~N[2026-07-15 13:20:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407938, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:46], updated_at: ~N[2026-07-15 13:20:46]}} [2026-07-15 13:20:47.011] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:30:36Z", "value" => "1.0"} [2026-07-15 13:20:47.045] [DEBUG] QUERY OK db=32.8ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "1.0", "app_version", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407939, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.045] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:30:36Z", "value" => "13"} [2026-07-15 13:20:47.083] [DEBUG] QUERY OK db=37.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "13", "android_version", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407940, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.083] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "934"} [2026-07-15 13:20:47.112] [DEBUG] QUERY OK db=29.2ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "934", "ram_free_mb", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407941, itemkey: "ram_free_mb", value: "934", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.113] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:30:36Z", "value" => "WIFI"} [2026-07-15 13:20:47.137] [DEBUG] QUERY OK db=23.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "WIFI", "network_type", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407942, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.137] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:30:36Z", "value" => "true"} [2026-07-15 13:20:47.179] [DEBUG] QUERY OK db=41.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "true", "kiosk_active", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407943, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.179] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:30:36Z", "value" => ""} [2026-07-15 13:20:47.205] [DEBUG] QUERY OK db=25.7ms queue=0.2ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:30:36Z", "sim_operator", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407944, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.206] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"} [2026-07-15 13:20:47.239] [DEBUG] QUERY OK db=31.9ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "UNKNOWN", "sim_number", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407945, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.240] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"} [2026-07-15 13:20:47.273] [DEBUG] QUERY OK db=33.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "UNKNOWN", "sim_iccid", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407946, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.275] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"} [2026-07-15 13:20:47.302] [DEBUG] QUERY OK db=26.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "UNKNOWN", "sim_imsi", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407947, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.302] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"} [2026-07-15 13:20:47.335] [DEBUG] QUERY OK db=32.1ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "UNKNOWN", "sim_iccid2", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407948, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.335] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:30:36Z", "value" => "UNKNOWN"} [2026-07-15 13:20:47.373] [DEBUG] QUERY OK db=37.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "UNKNOWN", "sim_imsi2", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407949, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.374] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "15"} [2026-07-15 13:20:47.398] [DEBUG] QUERY OK db=23.4ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "15", "data_usage_mb", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407950, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.398] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:30:36Z", "value" => "0"} [2026-07-15 13:20:47.423] [DEBUG] QUERY OK db=24.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "0", "mobile_data_mb", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407951, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.424] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:30:36Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:20:47.468] [DEBUG] QUERY OK db=41.5ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:30:36Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47312, ~N[2026-07-15 13:20:47], ~N[2026-07-15 13:20:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:47.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407952, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:30:36Z", message: nil, status_log_id: 47312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:47], updated_at: ~N[2026-07-15 13:20:47]}} [2026-07-15 13:20:47.471] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=47.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:20:47.476] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:47.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms 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 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:47.484] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.0ms queue=0.5ms idle=12.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:51.060] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:20:51.060] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:23:58Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:23:58Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:23:58Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:23:58Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:23:58Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:23:58Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:23:58Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:23:58Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:23:58Z","vendor":"MoreFun"} [2026-07-15 13:20:51.062] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:58Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:58Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:58Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:58Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:58Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:23:58Z", "vendor" => "MoreFun"} [2026-07-15 13:20:51.062] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:20:51.062] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:20:51.062] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:20:51.063] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=266.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-15 13:20:51.064] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=71.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:20:51.065] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:51.068] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.1ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:51.069] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=2.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:20:51.108] [DEBUG] QUERY OK source="pos_merchant" db=39.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [193] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-07-15 13:20:51.110] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1324.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 13:20:51.110] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:20:51.111] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:20:51.111] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:20:51.111] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:20:51.114] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:20:51.202] [DEBUG] QUERY OK db=86.9ms idle=3.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c771007fbbd11b4e83e29c7d1cb7e361155a9c12fac668bdac8282b0927acbb1", 6692, 913, ~U[2026-07-15 13:20:51Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:20:51.202] [INFO ] AutoPushService: Created push log 33605 for MF919 params.zip [2026-07-15 13:20:51.203] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 6692, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:20:51.203] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:51.203] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:20:51.204] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=92.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:20:51.208] [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-15 13:20:51.248] [DEBUG] QUERY OK db=38.5ms queue=0.2ms idle=7.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fbb8a111eef33fe641605f61932e1280e0f40f3292c6501be98c5be0d9858380", 6756, 17947, ~U[2026-07-15 13:20:51Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:20:51.248] [INFO ] AutoPushService: Created push log 33606 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:20:51.248] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 6756, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:20:51.248] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:51.249] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:20:51.251] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms queue=0.9ms idle=44.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:20:51.252] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:20:51.253] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:20:51.253] [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-15 13:20:51.255] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:20:51.255] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:51.256] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:51.256] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:51.256] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:51.257] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:20:51.258] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=3.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:20:51.258] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:20:51.288] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:51.289] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=30.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:20:51.290] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:51.291] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:51.291] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:20:51.309] [DEBUG] QUERY OK source="parameter_push_logs" db=17.0ms idle=2.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:50:51]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:20:51.309] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:20:51.309] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:20:51.310] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=19.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:20:51.312] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:51.312] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:51.313] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:51.356] [DEBUG] QUERY OK source="tms_terminals" db=41.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:51.379] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=42.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:23:58Z", ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:51.380] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47313, oid: "organization_id", upload_time: "2026-07-15T21:23:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]} [2026-07-15 13:20:51.380] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:23:58Z", "value" => "online"} [2026-07-15 13:20:51.400] [DEBUG] QUERY OK db=19.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:23:58Z", "online", "status", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407953, itemkey: "status", value: "online", timestamp: "2026-07-15T21:23:58Z", message: "Terminal status update", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.400] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:20:51.401] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:23:58Z", "value" => "48"} [2026-07-15 13:20:51.401] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:51.442] [DEBUG] QUERY OK db=40.7ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:23:58Z", "48", "battery", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407954, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:23:58Z", message: "Battery level", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.443] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:23:58Z", "value" => "online"} [2026-07-15 13:20:51.468] [DEBUG] QUERY OK db=24.9ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:23:58Z", "online", "network", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407955, itemkey: "network", value: "online", timestamp: "2026-07-15T21:23:58Z", message: "Network connectivity", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.470] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:20:51.470] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:23:58Z", "value" => "0"} [2026-07-15 13:20:51.471] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:51.495] [DEBUG] QUERY OK db=24.0ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:23:58Z", "0", "cpu", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407956, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:23:58Z", message: "CPU usage percentage", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.498] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.0"} [2026-07-15 13:20:51.524] [DEBUG] QUERY OK db=24.8ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:23:58Z", "1.0.0", "parameter_config", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407957, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:23:58Z", message: "Current parameters version", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.524] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.1"} [2026-07-15 13:20:51.560] [DEBUG] QUERY OK db=35.7ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-07-15T21:23:58Z", "1.0.1", "emv_config", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407958, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:23:58Z", message: "Current EMV config version", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.561] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:23:58Z", "value" => ""} [2026-07-15 13:20:51.653] [DEBUG] QUERY OK db=50.9ms queue=41.6ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:23:58Z", "keys_config", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407959, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:23:58Z", message: "Current keys config version", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.654] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:23:58Z", "value" => "1.0.0"} [2026-07-15 13:20:51.692] [DEBUG] QUERY OK db=36.8ms queue=0.5ms idle=94.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:23:58Z", "1.0.0", "application", 47313, ~N[2026-07-15 13:20:51], ~N[2026-07-15 13:20:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:51.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407960, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:23:58Z", message: "Current application version", status_log_id: 47313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:51], updated_at: ~N[2026-07-15 13:20:51]}} [2026-07-15 13:20:51.693] [WARN ] Unexpected async result [2026-07-15 13:20:51.694] [WARN ] Unexpected async result [2026-07-15 13:20:51.696] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.1ms idle=39.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:20:51.701] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:51.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.6ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:51.743] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.7ms queue=0.7ms idle=46.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:52.949] [INFO ] Received status update for terminal 98251226730001 [2026-07-15 13:20:52.949] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-07-15T21:24:00Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-07-15T21:24:00Z","value":"48"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-07-15T21:24:00Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-07-15T21:24:00Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-07-15T21:24:00Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-07-15T21:24:00Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-07-15T21:24:00Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-07-15T21:24:00Z","value":"1.0.0"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-07-15T21:24:00Z","vendor":"MoreFun"} [2026-07-15 13:20:52.949] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:24:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:24:00Z", "value" => "48"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:24:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:24:00Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:24:00Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.0"}], "sn" => "98251226730001", "uploadTime" => "2026-07-15T21:24:00Z", "vendor" => "MoreFun"} [2026-07-15 13:20:52.950] [INFO ] Extracted versions for 98251226730001: %{application: "1.0.0", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-07-15 13:20:52.950] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-07-15 13:20:52.950] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-07-15 13:20:52.952] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=956.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-15 13:20:52.953] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=155.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-07-15 13:20:52.954] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:52.956] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.4ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-07-15 13:20:52.958] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-07-15 13:20:52.997] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms idle=2.0ms 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-15 13:20:53.002] [DEBUG] QUERY OK db=3.1ms queue=0.4ms idle=1214.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["490603880000000"] [2026-07-15 13:20:53.002] [INFO ] ParamsZipBuilder: Merchant info for merchantid=490603880000000 - business_name=Payana, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-07-15 13:20:53.003] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms decode=0.1ms idle=5.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["60388683"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-07-15 13:20:53.006] [DEBUG] QUERY OK source="address" db=0.3ms idle=7.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [478] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-07-15 13:20:53.007] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="490603880000000" [2026-07-15 13:20:53.009] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-07-15 13:20:53.076] [DEBUG] QUERY OK db=66.0ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "974b684a87edff619e8c188123bd50266f8d7fd5d47f5ab35b45ec3cb6209521", 2789, 913, ~U[2026-07-15 13:20:53Z], "priv/ota/98251226730001/params.zip", 33, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-07-15 13:20:53.076] [INFO ] AutoPushService: Created push log 33607 for MF919 params.zip [2026-07-15 13:20:53.076] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/params.zip", "requestId" => 2789, "type" => "tms_command", "version" => "1.0.0"} [2026-07-15 13:20:53.076] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:53.077] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-07-15 13:20:53.078] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=71.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-07-15 13:20:53.081] [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-15 13:20:53.100] [DEBUG] QUERY OK db=18.5ms idle=6.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1abd8f3e3fda8fa21d4963ec75badce2484e597851aa44e67d185f9602ddb0c6", 2853, 17947, ~U[2026-07-15 13:20:53Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-07-15 13:20:53.101] [INFO ] AutoPushService: Created push log 33608 for MF919 l3config.zip (version: 1.0.1) [2026-07-15 13:20:53.101] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4059/ota/98251226730001/l3config.zip", "requestId" => 2853, "type" => "tms_command", "version" => "1.0.1"} [2026-07-15 13:20:53.101] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-07-15 13:20:53.101] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-07-15 13:20:53.103] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-07-15 13:20:53.103] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-07-15 13:20:53.106] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.2ms idle=3.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-07-15 13:20:53.106] [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-15 13:20:53.108] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-07-15 13:20:53.108] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:53.108] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-07-15 13:20:53.109] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=5.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:53.110] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:53.110] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-07-15 13:20:53.111] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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-15 13:20:53.111] [INFO ] Terminal updated: 98251226730001 [2026-07-15 13:20:53.151] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:20:53.152] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=39.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-07-15 13:20:53.153] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:53.154] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-07-15 13:20:53.154] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "1.0.0", "3.8.5"}] [2026-07-15 13:20:53.172] [DEBUG] QUERY OK source="parameter_push_logs" db=17.8ms idle=1.2ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-07-15 12:50:53]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-07-15 13:20:53.172] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 1.0.0, target: 3.8.5) [2026-07-15 13:20:53.173] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-07-15 13:20:53.175] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=20.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-07-15 13:20:53.176] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=3.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-07-15 13:20:53.176] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-07-15 13:20:53.177] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:20:53.192] [DEBUG] QUERY OK source="tms_terminals" db=14.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:20:53.219] [DEBUG] QUERY OK db=26.3ms idle=15.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-07-15T21:24:00Z", ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:20:53.219] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47314, oid: "organization_id", upload_time: "2026-07-15T21:24:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]} [2026-07-15 13:20:53.219] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-07-15T21:24:00Z", "value" => "online"} [2026-07-15 13:20:53.250] [DEBUG] QUERY OK db=29.8ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-07-15T21:24:00Z", "online", "status", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407961, itemkey: "status", value: "online", timestamp: "2026-07-15T21:24:00Z", message: "Terminal status update", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.250] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-07-15 13:20:53.250] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-07-15T21:24:00Z", "value" => "48"} [2026-07-15 13:20:53.250] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:53.278] [DEBUG] QUERY OK db=27.0ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-07-15T21:24:00Z", "48", "battery", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407962, itemkey: "battery", value: "48", timestamp: "2026-07-15T21:24:00Z", message: "Battery level", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.278] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-07-15T21:24:00Z", "value" => "online"} [2026-07-15 13:20:53.302] [DEBUG] QUERY OK db=23.4ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-07-15T21:24:00Z", "online", "network", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407963, itemkey: "network", value: "online", timestamp: "2026-07-15T21:24:00Z", message: "Network connectivity", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.302] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-07-15 13:20:53.302] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-07-15T21:24:00Z", "value" => "0"} [2026-07-15 13:20:53.303] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 42 terminals [2026-07-15 13:20:53.335] [DEBUG] QUERY OK db=31.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-07-15T21:24:00Z", "0", "cpu", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407964, itemkey: "cpu", value: "0", timestamp: "2026-07-15T21:24:00Z", message: "CPU usage percentage", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.335] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.0"} [2026-07-15 13:20:53.366] [DEBUG] QUERY OK db=30.5ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-07-15T21:24:00Z", "1.0.0", "parameter_config", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407965, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-07-15T21:24:00Z", message: "Current parameters version", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.366] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.1"} [2026-07-15 13:20:53.389] [DEBUG] QUERY OK db=22.3ms idle=32.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-15T21:24:00Z", "1.0.1", "emv_config", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407966, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-07-15T21:24:00Z", message: "Current EMV config version", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.390] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-07-15T21:24:00Z", "value" => ""} [2026-07-15 13:20:53.413] [DEBUG] QUERY OK db=23.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-07-15T21:24:00Z", "keys_config", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407967, itemkey: "keys_config", value: nil, timestamp: "2026-07-15T21:24:00Z", message: "Current keys config version", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.413] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-07-15T21:24:00Z", "value" => "1.0.0"} [2026-07-15 13:20:53.453] [DEBUG] QUERY OK db=39.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-07-15T21:24:00Z", "1.0.0", "application", 47314, ~N[2026-07-15 13:20:53], ~N[2026-07-15 13:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:20:53.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407968, itemkey: "application", value: "1.0.0", timestamp: "2026-07-15T21:24:00Z", message: "Current application version", status_log_id: 47314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:20:53], updated_at: ~N[2026-07-15 13:20:53]}} [2026-07-15 13:20:53.454] [WARN ] Unexpected async result [2026-07-15 13:20:53.454] [WARN ] Unexpected async result [2026-07-15 13:20:53.454] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=40.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-15 13:20:53.461] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:20:53.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms queue=0.1ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:20:53.468] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.8ms queue=0.4ms idle=12.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:21:16.947] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:21:16.947] [INFO ] Incoming JSON payload: {"oid":"001e59ff-ce42-4288-a5b9-0f5c36def4d0","sn":"98250623730001","uploadTime":"2026-07-15T04:31:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:31:07Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:21:16.948] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "001e59ff-ce42-4288-a5b9-0f5c36def4d0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:31:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:31:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:31:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:31:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:31:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:31:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:31:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:31:07Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:31:07Z", "vendor" => "morefun"} [2026-07-15 13:21:16.948] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:21:16.948] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:21:16.948] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:21:16.954] [DEBUG] QUERY OK source="parameter_templates" db=5.6ms idle=884.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-15 13:21:16.958] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms queue=0.6ms idle=155.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-15 13:21:16.959] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:21:16.959] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:21:16.960] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:21:16.989] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:21:16], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:21:16.989] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:21:16.992] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:21:17.036] [DEBUG] QUERY OK source="tms_terminals" db=43.0ms queue=0.1ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:21:16], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:21:17.061] [DEBUG] QUERY OK db=24.3ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "001e59ff-ce42-4288-a5b9-0f5c36def4d0", "2026-07-15T04:31:07Z", ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:21:17.061] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47315, oid: "001e59ff-ce42-4288-a5b9-0f5c36def4d0", upload_time: "2026-07-15T04:31:07Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]} [2026-07-15 13:21:17.061] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:31:07Z", "value" => "morefun"} [2026-07-15 13:21:17.142] [DEBUG] QUERY OK db=79.4ms queue=0.5ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "morefun", "vendor", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407969, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.143] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:31:07Z", "value" => "kiosk_launcher"} [2026-07-15 13:21:17.192] [DEBUG] QUERY OK db=48.4ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "kiosk_launcher", "model", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407970, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.192] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:31:07Z", "value" => "1.0"} [2026-07-15 13:21:17.224] [DEBUG] QUERY OK db=31.6ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "1.0", "app_version", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407971, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.225] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:31:07Z", "value" => "13"} [2026-07-15 13:21:17.243] [DEBUG] QUERY OK db=16.8ms queue=0.4ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "13", "android_version", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407972, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.243] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "933"} [2026-07-15 13:21:17.273] [DEBUG] QUERY OK db=29.7ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "933", "ram_free_mb", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407973, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.274] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:31:07Z", "value" => "WIFI"} [2026-07-15 13:21:17.329] [DEBUG] QUERY OK db=55.2ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "WIFI", "network_type", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407974, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.330] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:31:07Z", "value" => "true"} [2026-07-15 13:21:17.356] [DEBUG] QUERY OK db=23.2ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "true", "kiosk_active", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407975, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.357] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:31:07Z", "value" => ""} [2026-07-15 13:21:17.392] [DEBUG] QUERY OK db=34.2ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:31:07Z", "sim_operator", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407976, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.393] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"} [2026-07-15 13:21:17.435] [DEBUG] QUERY OK db=40.4ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "UNKNOWN", "sim_number", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407977, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.435] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"} [2026-07-15 13:21:17.458] [DEBUG] QUERY OK db=23.0ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "UNKNOWN", "sim_iccid", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407978, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.459] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"} [2026-07-15 13:21:17.494] [DEBUG] QUERY OK db=34.0ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "UNKNOWN", "sim_imsi", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407979, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.494] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"} [2026-07-15 13:21:17.524] [DEBUG] QUERY OK db=29.6ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "UNKNOWN", "sim_iccid2", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407980, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.525] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:31:07Z", "value" => "UNKNOWN"} [2026-07-15 13:21:17.564] [DEBUG] QUERY OK db=36.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "UNKNOWN", "sim_imsi2", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407981, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.569] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "15"} [2026-07-15 13:21:17.609] [DEBUG] QUERY OK db=37.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "15", "data_usage_mb", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407982, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.609] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:31:07Z", "value" => "0"} [2026-07-15 13:21:17.747] [DEBUG] QUERY OK db=134.4ms queue=3.6ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "0", "mobile_data_mb", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407983, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.748] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:31:07Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:21:17.803] [DEBUG] QUERY OK db=53.5ms idle=140.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:31:07Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47315, ~N[2026-07-15 13:21:17], ~N[2026-07-15 13:21:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:21:17.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407984, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:31:07Z", message: nil, status_log_id: 47315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:21:17], updated_at: ~N[2026-07-15 13:21:17]}} [2026-07-15 13:21:17.807] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=56.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:21:17.817] [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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:18:54]}, %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-15 13:21:17.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=19.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:21:17.829] [DEBUG] QUERY OK source="tms_terminal_status_items" db=1.1ms queue=0.6ms idle=20.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:23:54.332] [INFO ] Running offline device check... [2026-07-15 13:23:54.332] [INFO ] Starting offline device check... [2026-07-15 13:23:54.334] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=824.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-07-15 13:23:54.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=530.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:23:54.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.376] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:23:54], 2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:23:54.376] [INFO ] Terminal 61250424798001 back online [2026-07-15 13:23:54.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=31.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:23:54.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.380] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.380] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.382] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.383] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.385] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.419] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:23:54], 11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:23:54.419] [INFO ] Terminal 61251020798002 back online [2026-07-15 13:23:54.420] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=31.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:23:54.426] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.455] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:23:54], 15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:796 [2026-07-15 13:23:54.455] [INFO ] Terminal UNKNOWN_SN back online [2026-07-15 13:23:54.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=24.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:23:54.457] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.487] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=12.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-15 13:23:54.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.509] [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-15 13:23:54.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.511] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-07-15 13:23:54.514] [INFO ] Offline device check completed. Found 37 offline devices, updated 3 statuses. [2026-07-15 13:23:54.515] [INFO ] Offline device check completed successfully [2026-07-15 13:24:39.183] [INFO ] Received status update for terminal 98250623730001 [2026-07-15 13:24:39.183] [INFO ] Incoming JSON payload: {"oid":"ffc3df9f-444a-4560-80b5-87ce3be45170","sn":"98250623730001","uploadTime":"2026-07-15T04:34:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"ram_free_mb","value":"933","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"data_usage_mb","value":"15","timestamp":"2026-07-15T04:34:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-07-15T04:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), 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 (com.a (truncated) [2026-07-15 13:24:39.185] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ffc3df9f-444a-4560-80b5-87ce3be45170", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:34:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-07-15T04:34:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:34:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:34:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "933"}, %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:34:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:34:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:34:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "15"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...}], "sn" => "98250623730001", "uploadTime" => "2026-07-15T04:34:29Z", "vendor" => "morefun"} [2026-07-15 13:24:39.186] [INFO ] Extracted versions for 98250623730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-07-15 13:24:39.186] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-07-15 13:24:39.187] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (morefun kiosk_launcher) - missing version [2026-07-15 13:24:39.187] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=562.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-15 13:24:39.188] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=381.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-07-15 13:24:39.188] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-07-15 13:24:39.190] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-07-15 13:24:39.191] [INFO ] Terminal updated: 98250623730001 [2026-07-15 13:24:39.239] [DEBUG] QUERY OK source="tms_terminals" db=47.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-07-15 13:24:39], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-07-15 13:24:39.239] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-07-15 13:24:39.240] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms idle=48.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-07-15 13:24:39.270] [DEBUG] QUERY OK source="tms_terminals" db=29.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-07-15 13:24:39], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-07-15 13:24:39.285] [DEBUG] QUERY OK db=14.4ms idle=30.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "ffc3df9f-444a-4560-80b5-87ce3be45170", "2026-07-15T04:34:29Z", ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-07-15 13:24:39.286] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 47316, oid: "ffc3df9f-444a-4560-80b5-87ce3be45170", upload_time: "2026-07-15T04:34:29Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]} [2026-07-15 13:24:39.286] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-07-15T04:34:29Z", "value" => "morefun"} [2026-07-15 13:24:39.322] [DEBUG] QUERY OK db=35.2ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "morefun", "vendor", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407985, itemkey: "vendor", value: "morefun", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.322] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-07-15T04:34:29Z", "value" => "kiosk_launcher"} [2026-07-15 13:24:39.360] [DEBUG] QUERY OK db=36.7ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "kiosk_launcher", "model", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407986, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.361] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-07-15T04:34:29Z", "value" => "1.0"} [2026-07-15 13:24:39.390] [DEBUG] QUERY OK db=29.0ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "1.0", "app_version", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407987, itemkey: "app_version", value: "1.0", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.391] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-07-15T04:34:29Z", "value" => "13"} [2026-07-15 13:24:39.416] [DEBUG] QUERY OK db=25.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "13", "android_version", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407988, itemkey: "android_version", value: "13", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.417] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "933"} [2026-07-15 13:24:39.456] [DEBUG] QUERY OK db=39.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "933", "ram_free_mb", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407989, itemkey: "ram_free_mb", value: "933", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.457] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-07-15T04:34:29Z", "value" => "WIFI"} [2026-07-15 13:24:39.488] [DEBUG] QUERY OK db=30.5ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "WIFI", "network_type", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407990, itemkey: "network_type", value: "WIFI", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.488] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-07-15T04:34:29Z", "value" => "true"} [2026-07-15 13:24:39.503] [DEBUG] QUERY OK db=14.6ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "true", "kiosk_active", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407991, itemkey: "kiosk_active", value: "true", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.503] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-07-15T04:34:29Z", "value" => ""} [2026-07-15 13:24:39.528] [DEBUG] QUERY OK db=24.3ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-07-15T04:34:29Z", "sim_operator", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407992, itemkey: "sim_operator", value: nil, timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.528] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"} [2026-07-15 13:24:39.638] [DEBUG] QUERY OK db=108.7ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "UNKNOWN", "sim_number", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407993, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.638] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"} [2026-07-15 13:24:39.688] [DEBUG] QUERY OK db=49.1ms queue=0.1ms idle=11.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "UNKNOWN", "sim_iccid", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407994, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.688] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"} [2026-07-15 13:24:39.842] [DEBUG] QUERY OK db=153.3ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "UNKNOWN", "sim_imsi", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407995, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.842] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"} [2026-07-15 13:24:39.878] [DEBUG] QUERY OK db=35.3ms queue=0.1ms idle=154.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "UNKNOWN", "sim_iccid2", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407996, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.879] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-07-15T04:34:29Z", "value" => "UNKNOWN"} [2026-07-15 13:24:39.910] [DEBUG] QUERY OK db=31.2ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "UNKNOWN", "sim_imsi2", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407997, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.911] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "15"} [2026-07-15 13:24:39.949] [DEBUG] QUERY OK db=37.8ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "15", "data_usage_mb", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407998, itemkey: "data_usage_mb", value: "15", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.949] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-07-15T04:34:29Z", "value" => "0"} [2026-07-15 13:24:39.994] [DEBUG] QUERY OK db=44.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-07-15T04:34:29Z", "0", "mobile_data_mb", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:39.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 407999, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:39.995] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-07-15T04:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ...} [2026-07-15 13:24:40.036] [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-15T04:34: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), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., "installed_apps", 47316, ~N[2026-07-15 13:24:39], ~N[2026-07-15 13:24:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-07-15 13:24:40.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 408000, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS (com.mercury.pos), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefu" <> ..., timestamp: "2026-07-15T04:34:29Z", message: nil, status_log_id: 47316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-07-15 13:24:39], updated_at: ~N[2026-07-15 13:24:39]}} [2026-07-15 13:24:40.040] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=44.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:376 [2026-07-15 13:24:40.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: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-07-15 13:23:54]}, %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-15 13:24:40.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 10 [2] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385 [2026-07-15 13:24:40.055] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.9ms queue=0.4ms idle=13.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` IN (?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [47174, 47192, 47202, 47208, 47212, 47224, 47240, 47247, 47253, 47265] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:385